我有一個變量(串),在其中例如有這樣的文字:運行JavaScript字符串的代碼裏面的Javascript
"document.getElementById('tekst').innerHTML = 'Probeer opnieuw!';"
我使用Ajax和PHP這個變量,而不是在那裏我的(可能很容易)問題是關於。
說我想使用此代碼作爲代碼本身,而不是一個字符串,所以而不是這是一個字符串,我希望它的代碼執行。
我該如何做到這一點?
在此先感謝
我有一個變量(串),在其中例如有這樣的文字:運行JavaScript字符串的代碼裏面的Javascript
"document.getElementById('tekst').innerHTML = 'Probeer opnieuw!';"
我使用Ajax和PHP這個變量,而不是在那裏我的(可能很容易)問題是關於。
說我想使用此代碼作爲代碼本身,而不是一個字符串,所以而不是這是一個字符串,我希望它的代碼執行。
我該如何做到這一點?
在此先感謝
不要這樣做。 It's a security nightmare。
如果你真的必須這樣做,使用eval()
如:
eval("document.getElementById('tekst').innerHTML = 'Probeer opnieuw!';");
考慮您的示例和解釋,我懷疑你是檢索鏈接,其內容完全由JavaScript代碼。你遇到的問題是你用來檢索該URL的方法給你一個包含該javascript的字符串。我相信它的目的是爲了代替使用<script>
元素來加載該代碼。這樣做動態:
var script = document.createElement("script");
script.src = "url/to/your/javascript";
document.getElementByTagName('body')[0].appendChild(script);
可以使用eval()方法。但是,如果你不必這樣做,不要這樣做。如果你做必須,確保你知道你在做什麼。
eval("document.getElementById('tekst').innerHTML = 'Probeer opnieuw!';")
下面是使用eval()
替代:
var stringContainingJavascript = "document.getElementById('tekst').innerHTML = 'Probeer opnieuw!';"
var body = document.getElementsByTagName('body')[0];
var paragraph = document.createElement('p');
paragraph.id = 'tekst';
body.appendChild(paragraph);
var script = document.createElement('script');
var scriptText = document.createTextNode(stringContainingJavascript);
script.appendChild(scriptText);
body.appendChild(script);
上面的腳本創建<p>
元件並給它id="tekst"
,追加<p>
到文檔的<body>
之前。
然後,在將<script>
附加到文檔的<body>
之前,相同的腳本創建<script>
元素並將字符串附加到該元素。