脚本延迟不适用于 IE11
Script Defer is not working on IE11
我的 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
我在下面有这个例子link,非常感谢这方面的任何帮助:
http://samples.msdn.microsoft.com/workshop/samples/author/dhtml/refs/insertScript_2.htm
它似乎工作的方式是这样的
我使用 document.createElement 添加元素,并将其附加到目标元素,或者附加到 document.body 以防 targetElement 不存在
您可能会在原始代码中检查一些语法错误,但这确实有效(虽然不知道您最初尝试解决什么,但这是向页面添加脚本的糟糕方式)
而且确实没有必要 "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>
您需要将您的 java 脚本代码移动到 .js 文件,然后使用 src 属性包含该文件,然后这将起作用。
例如将 java 脚本代码移动到 test.js 然后包含如下文件。
<script defer src="\Test.js">
这是 IE 11 中使用 defer 属性的约定。如果脚本标签中没有 src 属性,Defer 不能 运行。
我的 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
我在下面有这个例子link,非常感谢这方面的任何帮助:
http://samples.msdn.microsoft.com/workshop/samples/author/dhtml/refs/insertScript_2.htm
它似乎工作的方式是这样的
我使用 document.createElement 添加元素,并将其附加到目标元素,或者附加到 document.body 以防 targetElement 不存在
您可能会在原始代码中检查一些语法错误,但这确实有效(虽然不知道您最初尝试解决什么,但这是向页面添加脚本的糟糕方式)
而且确实没有必要 "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>
您需要将您的 java 脚本代码移动到 .js 文件,然后使用 src 属性包含该文件,然后这将起作用。
例如将 java 脚本代码移动到 test.js 然后包含如下文件。
<script defer src="\Test.js">
这是 IE 11 中使用 defer 属性的约定。如果脚本标签中没有 src 属性,Defer 不能 运行。