2015-02-12 104 views
0

我想更改iframe中頁面的JavaScript。 (我沒有跨域問題)動態更改javascript

說我有兩個HTML文件:

的index.html

<html> 
 
<head> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
 
<script> 
 
function change() { 
 
\t var text = document.getElementById("text").value; 
 
\t 
 
\t var html = $("#iframe_id").contents().find("html").html(); 
 
\t html = html.replace(/---someText---/mg, text); 
 

 
\t $("#iframe_id").contents().find("html").html(html); 
 
} 
 
</script> 
 
</head> 
 
<body> 
 
Dynamic Alert Text: <input type="text" id="text" value="" /> 
 
<input type="button" value="Change Iframe" onclick="change()" /> 
 
<br><br> 
 
<iframe src="iframe.html" id="iframe_id" width="500" height="400"></iframe> 
 
</body> 
 
</html>

和Iframe.html的

<html> 
 
<head> 
 
<script> 
 
function test() { 
 
\t alert("---someText---"); 
 
} 
 
</script> 
 
</head> 
 
<body> 
 
<div>Text is: ---someText---</div> 
 
<input type="button" value="Test Me!" onclick="test();" /> 
 
</body> 
 
</html>

我想將iframe.html的警報消息替換爲我從index.html獲得的文本 只需更換它就行不通。 有沒有解決辦法。

+0

不是預先存在iframe,而是使用javascript代替編輯它,然後將其放入DOM中生成帶有您的數據的iframe – Asheliahut 2015-02-12 05:14:57

+0

當用戶更改輸入並點擊「更改「再次按鈕。 – marvin 2015-02-12 05:18:16

+0

然後在更改按鈕上再次銷燬DOM中的iframe並重新創建。您不能編輯iframe中的任何內容,這會在安全性方面造成巨大的問題。儘管下面的答案使用了一個很好的解決方法。這與將信息存儲在服務器上並使iframe能夠在客戶端上除外相同。 – Asheliahut 2015-02-12 05:21:24

回答

0

您可以使用會話cookie或窗口對象或localStorage的獲取和設置值,我覺得這是解決您的問題最簡單的方法

index.html中設置的localStorage或window.sessionStorage變量保存文本:

var text = document.getElementById("text").value; 
      localStorage.setItem("myItem",text) 

在Iframe.html的獲得該變量的值

alert(localStorage.getItem("myItem")); 

alert(window.sessionStorage.getItem("myItem")); 
+0

只適用於支持html5的瀏覽器 – Asheliahut 2015-02-12 05:22:02

+0

這種方法的問題是(至少對於我自己的情況),我實際上不知道iframe.html中的內容。我只搜索特殊標記(--- someText ---),在index.html中創建一個表單供用戶更改。它們可以是html,css或js。 js函數可能像alert一樣簡單,或者非常複雜。 – marvin 2015-02-12 05:36:32

+0

然後,如果你沒有在iframe html中的數據控制,那麼你想要的東西不能完成。 – Asheliahut 2015-02-12 05:40:19