-3

我有下面的代码将动态创建脚本标签。

<html>
<head>
    <title>Applying</title>
</head>
<body>

<script>
function getUrlVars() {
    var vars = {};
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, 
        function(m,key,value) {
            vars[key] = value;
        });
    return vars;
}
var variable1 = getUrlVars()["parameter1"];    

var myScript = document.createElement('script');

myScript.setAttribute('type', 'text/javascript');
myScript.setAttribute('urlId', '420');
myScript.setAttribute('dataTitle', variable1);
myScript.setAttribute('dataemail', 'admin@domain.net');

document.body.appendChild(myScript);                              
</script>

<input name="Apply" type="button" id="Apply" value="Apply" ONCLICK="window.location.href='https://www.google.com?'">

</body>
</html>

但不知何故,上面的代码在 IE 中不起作用,但在 Chrome 中运行良好。我不确定是什么原因?有人可以帮我吗?

这整件事在 IE 中不起作用。

var myScript = document.createElement('script');

myScript.setAttribute('type', 'text/javascript');
myScript.setAttribute('urlId', '420');
myScript.setAttribute('dataTitle', variable1);
myScript.setAttribute('dataemail', 'admin@domain.net');

document.body.appendChild(myScript);    
4

1 回答 1

1

您可以使用以下函数动态添加脚本元素。

   var create_script = function(data) {
        var script = document.createElement('script');
        script.type = 'text/javascript';
        script.text = data;

        //if you have to debug dynamically loaded script in chrome use the following - sourceURL has changed in the recent versions of chrome devetools.
        //script.text = data + "\n\n //@ sourceURL=" + ns + ".js\n";

        //append the script element to body or head or where it seems fit.
        document.body.appendChild(script);
    }

“数据”参数是实际的 javascript 代码/URL,它将构成脚本标记的一部分。您的代码中缺少此内容。

编辑:对于非标准属性,您可能希望根据http://www.w3schools.com/DTD/dtd_attributes.asp更改文档类型

于 2013-07-28T17:44:18.197 回答