如何写入iframe内的文本框

时间:2013-02-06 07:05:06

标签: javascript html

我有一个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' ”。

我们怎么做?

3 个答案:

答案 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)

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

StackOverflow

这可能会有所帮助:

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