我有一个main.html
,里面是<ifram id='if' name='if'>
,它会加载另一个网站(这会加载一个不在我的域中的网站,比如Facebook)。
iframe
中加载的网站有<form name='form2' id='form2'>
,其中<input type='text' name='tb' id='tb'>
同样在main.html
,我有一个按钮,我想知道是否可以在按钮上放置一些Javascript,这样当我们点击它时,名为tb
的文本框中的文字会更改为'az' ”。
我们怎么做?
答案 0 :(得分:2)
您可以'执行该操作,因为这将是跨站点脚本,出于安全原因这是禁止的。您可以使用代理,通过您自己的网站在iframe
中提供HTML,以便从浏览器的角度看它不再是跨站点。
如果<iframe>
来自同一个域,则可以轻松访问这些元素:
$("#iFrame").contents().find("#someDiv")
测试:http://jsfiddle.net/Yy6tu/按Ctrl+Shift+j
,看看你得到了什么!
更新:如果您的同一文件夹中有other.html
个文件,则可以执行以下操作:
<强> main.html中强>:
<head>
$('document').ready(function(){
$("#if").contents().find("#b").val('lalalala');
});
</head>
<body>
<input type='button' name='executer' value="Maro">
<iframe width="600" height="400" src='other.html' name='if' id="if"></iframe>
</body>
<强> other.html 强>:
<form action="x" name="form2" id="form2">
<input type="text" name="tb" id="b">
</form>
这应该有用!
答案 1 :(得分:1)
我的朋友不可能。跨域保护虽然限制了某些功能,但具有很大的优势。
这可能会有所帮助:
http://msdn.microsoft.com/en-us/library/bb735305.aspx
可能的解决方案是重新加载iframe。并在iframe的url查询字符串中将文本值添加为param。但这将是一个牵强附会的解决方案。
另一种可能的解决方案是使用中间iframe或以其他方式称为代理iframe。这可能会有所帮助:
http://www.tomslabs.com/index.php/2012/06/iframes-and-javascript-cross-domain-security/
修改强>
如果iframe与页面在同一个域中,则应该起作用。
$('#if').contents().find('#b').val('fd');
答案 2 :(得分:0)
这绝对不可能,因为它直接违反了same origin policy。