如何获取使用document.write()创建的JavaScript来执行?
时间:2020-03-05 18:55:10 来源:igfitidea点击:
我有一个多帧布局。其中一个框架包含一个表单,我正在通过XMLHttpRequest提交该表单。现在,当我使用document.write()用表单重写框架时,并且我要添加的新页面包含任何javascript,那么javascript是否不会在IE6中运行?
例如:
document.write("<html><head><script>alert(1);</script></head><body>test</body></html>");
在上述情况下,页面内容被test代替,但是alert()未执行。在Firefox中可以正常工作。
解决上述问题的方法是什么?
解决方案
回答
解决方法是在Callback函数或者调用eval()方法时以编程方式向JavaScript中的DOM元素添加<script>
块。这是我们可以在IE 6中完成此工作的唯一方法。
回答
另一个可能的选择是使用JSON,动态添加脚本引用,这些引用将由浏览器自动处理。
干杯。
回答
简而言之:我们不能真正做到这一点。但是,JavaScript库(例如jQuery)提供了实现此目的的功能。如果我们依赖于此,请尝试使用jQuery。
回答
评估和/或者动态执行脚本是不明智的做法。非常不好的做法。非常非常非常糟糕的做法。我不能承受太大的压力,这是多么糟糕的做法。
又名:听起来像是糟糕的设计。我们想再次解决什么问题?
回答
与其公开JS代码,不如将其包含在一个函数中(我们称之为"doIt
")。框架窗口(假设它的名称是" formFrame")有一个父窗口(即使它不可见),我们可以在其中执行JS代码。在该范围内执行实际的帧重写操作:
window.parent.rewriteFormFrame(theHtml);
父窗口中的rewriteFormFrame
函数如下所示:
function rewriteFormFrame(html) { formFrame.document.body.innerHTML = html; formFrame.doIt(); }
回答
我们可以在body标签(<body onload =" jsWrittenLoaded()">`)中使用onload属性。