0

テキスト フィールドを 1 つ取り、その中に iframe を呼び出したフォームがあり、その iframe には のテキスト フィールドがありますNameNameJavaScript/jQuery を使用して、キーアップ時にフォームのテキスト フィールドにそれを表示したいと考えています。つまり、Nameテキストフィールドに何かを入力しただけでなく、入力フィールドに表示されます。
添付画像参照 フォーム内の <code>Name</code> 入力欄に iframe から名前を表示したい

別のドメインから iframe を呼び出しています。以下のコードを使用しました

<script> 
var iframe = document.getElementById('progressive');
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
var usernameTextBox = innerDoc.getElementById('ApplicantInfo1_FirstName');
usernameTextBox.focus();
</script>
4

3 に答える 3

1

これは機能するはずです:

var windowjQuery = $('#progressive')[0].contentWindow.$;
var f = $('#progressive').contents().find('#ApplicantInfo1_FirstName');

アップデート:

このトピックの詳細については、関連する質問、becを参照してください。現在、この特定のケースをテストするための環境をセットアップする可能性はありません。

重要なのは、親ページではなく、 <iframe> jQueryオブジェクト( )を呼び出す必要があるということです。$

于 2012-12-29T10:05:03.443 に答える
1

親ページで、ドメイン名を管理していますか? その場合は、サブドメインを作成してください。親ページの名前が example.com で、サブドメイン iframe.example.com を作成するとします。

親ページでは、設定するだけです

document.domain = "example.com";

のサブドメインは安全なドメインと見なされ、2 つのページ間で会話することが許可されます。

これについては、より広範な説明があります: 同じ生成元ポリシーを回避する方法

于 2012-12-29T09:57:13.980 に答える
1

これがクロスドメインで機能するかどうかはわかりませんが、jQuery .bind()をチェックしてみてください。

これは .bind() の例です

$('#progressive').load(function() {
  $(this)
    .contents()
    .find('#ApplicantInfo1_FirstName')
    .bind('keydown', function() {
        //  do stuff
    });
});

W3schoolsの詳細/詳細はこちら、ライブ デモはこちら。しかし、それらはクロスドメインではありません。また、より多くの例をここに

それ以外の場合、親から子 iframe の JavaScript にアクセスする方法の例を次に示します。

document.getElementById('ApplicantInfo1_FirstName').contentWindow.yourfunction()
于 2012-12-29T10:17:21.977 に答える