2

我有一个main.html, 里面是<ifram id='if' name='if'>,它加载另一个站点(这会加载一个不在我的域中的站点,例如 Facebook)。

iframe在has中加载的站点,<form name='form2' id='form2'>在其中有<input type='text' name='tb' id='tb'>

同样在 中main.html,我有一个按钮,我想知道我们是否可以在按钮上放置一些 Javascript,以便当我们单击它时,文本框中名为“az”的文本tb会更改为“az”。

我们应该怎么做?

4

3 回答 3

2

您可以这样做,因为那将是跨站点脚本,出于安全原因,这是禁止的。您可以使用代理,iframe通过您自己的站点提供 HTML,这样从浏览器的角度来看,它不再是跨站点的。

如果<iframe>来自同一域,则可以轻松访问这些元素:

$("#iFrame").contents().find("#someDiv")

测试: http: //jsfiddle.net/Yy6tu/按下Ctrl+Shift+j看看你得到了什么!


更新:如果您other.html在同一文件夹中有文件,您可以这样做:

主要.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>

其他.html

<form action="x" name="form2" id="form2"> 
     <input type="text" name="tb" id="b">
</form>

那应该工作!

于 2013-02-06T07:19:30.880 回答
1

我的朋友是不可能的。跨域保护虽然限制了一些功能,但有很大的优势。

堆栈溢出

这可能会有所帮助:

http://msdn.microsoft.com/en-us/library/bb735305.aspx

一个可能的解决方案是重新加载 iframe。并将文本值作为参数添加到 iframe 的 url 查询字符串中。但这将是一个牵强的解决方案。

另一种可能的解决方案是使用中间 iframe 或称为代理 iframe。这可能会有所帮助:

http://www.tomslabs.com/index.php/2012/06/iframes-and-javascript-cross-domain-security/

编辑:

如果 iframe 与页面位于同一域中,则应该可以。

$('#if').contents().find('#b').val('fd');
于 2013-02-06T07:20:17.090 回答
0

这是绝对不可能的,因为它直接违反了同源政策

于 2013-02-06T07:16:54.200 回答