2012-03-09 2 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

+0

@mplungjan. Я знаю, что он уничтожит всю страницу, я что-то тестирую, поэтому объяснение всей истории не будет иметь смысла. else отлично работает, и я просто ищу способ, которым я могу назначать контент по тегу сценария динамическим способом. –

+0

Назначение 'script.text' должно делать трюк, конечно, то, что вы назначаете, должно быть допустимой программой. – RobG

ответ

11

Вы можете сделать:

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

На практике установлено ли свойство типа или нет, скорее всего, не имеет значения, но она дает один теплый внутренний жар.

+0

отлично работает, когда я делаю с чистым javascript, но не работаю с jquery ... говоря, что $ не определено, хотя я включил копию jquery :-( –

+1

Если вы вставляете скрипт, который требует jQuery, вам нужно сначала убедиться, что он загружен. – RobG

2

Сценарии могут быть прочитаны или записаны с использованием «scripts.text». Это часть сценария Data Object Model (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

Объясните свой ответ –

Смежные вопросы