2015-02-12 132 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