我有一个表单,我在其中使用了一个文本字段,并在其中调用了iframe,在iframe中有Name
的文本字段。我想在使用JavaScript / jQuery进行键控时将Name
显示在我的表单文本字段中。我的意思是,我在Name
文本字段中输入了一些内容,它将显示在我的输入字段中
我从另一个域调用iframe。我使用了下面的代码
<script>
var iframe = document.getElementById('progressive');
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
var usernameTextBox = innerDoc.getElementById('ApplicantInfo1_FirstName');
usernameTextBox.focus();
</script>
答案 0 :(得分:1)
在您的父页面中,您是否控制了域名?如果是,请创建子域。假设您的父页面名为example.com,然后创建子域iframe.example.com
在您的父页面中,您只需设置
即可document.domain = "example.com";
然后将子域视为安全域,并允许您在2页之间进行对话。
这里有更广泛的描述: Ways to circumvent the same-origin policy
答案 1 :(得分:1)
这应该有效:
var windowjQuery = $('#progressive')[0].contentWindow.$;
var f = $('#progressive').contents().find('#ApplicantInfo1_FirstName');
<强>更新强>
您可以在related question中阅读有关此主题的更多信息。我现在无法设置测试此特定案例的环境。
重点是,您应该调用<iframe>
jQuery 对象($
),而不是父页面。
答案 2 :(得分:1)
我不确定这是否适用于跨域,但您可能需要查看jQuery .bind()。
以下是.bind()
的示例$('#progressive').load(function() {
$(this)
.contents()
.find('#ApplicantInfo1_FirstName')
.bind('keydown', function() {
// do stuff
});
});
更多/更好的详细信息here on W3schools和实时演示here。但那些不是跨领域的。还有更多示例here。
否则,以下是如何从父级访问子iframe中的javascript的示例:
document.getElementById('ApplicantInfo1_FirstName').contentWindow.yourfunction()