我的html页面上有以下代码:
<SCRIPT type="text/javascript">
function insertScript()
{
var sHTML="<input type=button onclick=" + "go2()" + " value='Click Me'><BR>";
var sScript="<SCRIPT DEFER>";
sScript = sScript + "function go2(){ alert('Hello from inserted script.') }";
sScript = sScript + "</SCRIPT" + ">";
ScriptDiv.innerHTML = sHTML + sScript;
}
</SCRIPT>
它工作正常并在IE9上显示警报,但在IE11上没有显示警告。
'go2' is undefined
我在以下链接中有这个例子,在这方面的任何帮助都非常受欢迎:
http://samples.msdn.microsoft.com/workshop/samples/author/dhtml/refs/insertScript_2.htm
答案 0 :(得分:2)
您需要将您的javascript代码移动到.js文件,然后使用src属性包含该文件,然后这将有效。
e.g。将java脚本代码移动到test.js然后包含如下文件。
<script defer src="\\Test.js">
这是IE 11中使用defer属性的惯例。在脚本标记中,Defer无法在没有src属性的情况下运行。
答案 1 :(得分:1)
它似乎有用的方式,就像这样
我使用document.createElement添加元素,并将其附加到目标元素,或者在targetElement不存在的情况下附加到document.body
您可能会在原始代码中检查一些语法错误,但这样做(不知道您最初尝试解决的问题,这是向页面添加脚本的一种可怕方式)
并且确实不需要“DEFER”,您可能需要等到页面加载(因此请将自己附加到加载事件)
function insertScript(targetElement)
{
var button = document.createElement('input');
button.setAttribute('type', 'button');
button.setAttribute('onclick', 'go2()');
button.value = 'Click me';
var sScript= document.createElement('script');
sScript.innerHTML = "function go2(){ alert('Hello from inserted script.'); }";
(targetElement || document.body).appendChild(button);
(targetElement || document.body).appendChild(sScript);
}
insertScript(document.getElementById('target'));
<div id="target"></div>