2012-03-09 74 views
1

我正在使用javascript在我的页面下动态创建脚本标记。到目前为止,我能够创建它,能够设置它的类型和src。现在我的问题是,是否有任何方法,而不是定义src到一个不同的页面,我可以分配其内容在同一页面上?让我写我的代码,使其更有意义:在脚本标记下编写内容

var script = document.createElement("script"); 
script.type = "text/javascript"; 
script.src = 'custom.js'; 

现在有什么办法我可以做这样的事情给它分配的内容以及:

script.content = 'document.write("stackoverflow")'; 
script.html = 'document.write("stackoverflow")'; 

我不知道是否他们是否存在,但只是猜测我是否可以做这样的事情。

+2

你能解释一下你正在努力实现的,而不是你是怎么想的,你可能会实现吗?编写动态脚本到目前为止没有任何意义。你也不想在页面加载后使用document.write,因为它会擦除你所在的页面 – mplungjan 2012-03-09 06:48:50

+0

@mplungjan我知道它会擦掉整个页面,我正在测试一些东西,因此解释整个故事并没有任何意义。其他工作正常,我只是寻找一种方式,我可以在脚本标记下以动态方式分配内容 – 2012-03-09 06:53:58

+0

分配给'script.text'应该做的诀窍 - 当然你分配的必须是一个有效的程序。 – RobG 2012-03-09 07:01:04

回答

11

你可以这样做:

var script_tag = document.createElement('script'); 
script_tag.type = 'text/javascript'; 
script_tag.text = 'alert("hello world")'; 
document.body.appendChild(script_tag); 

在实践中,是否设置type属性或不很可能无关紧要,但它提供了一个温暖的内发光。

+0

工作正常,当我用纯JavaScript的但没有与jquery工作...说$没有定义,虽然我已经包含jQuery的副本:-( – 2012-03-09 07:13:14

+1

如果你插入的脚本,需要jQuery,你需要确保它是第一次加载。 – RobG 2012-03-09 13:46:11

2

使用'scripts.text'可以读取或写入脚本。它是脚本数据对象模型(DOM)的一部分。由于某种原因,它与其他HTML标签不同。例如:'myScript.innerHTML'往往不起作用,但是'scripts.namedItem(“myScript”).text'会。

<p>Change scripts.text <a href="https://www.w3schools.com/jsref/prop_script_text.asp">https://www.w3schools.com/jsref/prop_script_text.asp</a> 
 
</p> 
 

 
<p>Script Object <a href="https://www.w3schools.com/jsref/dom_obj_script.asp">https://www.w3schools.com/jsref/dom_obj_script.asp</a> 
 
</p> 
 

 
<canvas id="Canvas1" style="border: 5px solid cyan"></canvas> 
 
<p id="Para1">...</p> 
 
<button onclick="ChangeScript()">Change Script</button> 
 
<button onclick="DrawIt()">Drawit</button> 
 
<button onclick="para1.innerHTML=script1.text;">Show Script</button> 
 

 

 
<script id="Script1"></script> 
 

 
<script> 
 
    function ChangeScript() { 
 
    script1.text = "function DrawIt(){canvas1.fillRect(1,2,30,40)}" 
 
    } 
 

 
    //Note: changing the script text more than once may not work. 
 

 
    canvas1 = document.getElementById("Canvas1").getContext("2d"); 
 
    script1 = document.scripts.namedItem("Script1"); 
 
    para1 = document.getElementById("Para1") 
 
</script> 
 

 

 

 
<a href="http://www.w3schools.com/code/tryit.asp?filename=FCR1ZI3MBN77">Try it Yourself, Change scripts.text</a>

+0

解释你的答案 – 2017-02-15 05:22:07

相关问题