iframeにネストされている場合とされていない場合があるドキュメントでスクリプトが実行されています。ネストされたものを検出する問題を整理しましたが、iframeの場合にDOMの準備完了状態を検出する方法がわかりません。
これが私がすでに持っているものです:
if (window.self !== window.top) {
// is nested
// DOM ready test here
// execute code here
} else {
// is not nested
$(document).ready(function() {
// execute code here
});
}
私はすでにこの投稿を読んでいますが、私の特定の質問に対する答えがわかりません。そこでの解決策を誤解している可能性があるので、遠慮なく訂正してください。
編集:これはFancyboxの問題のようです。このコード:
alert(document.getElementById('username').className);
document.getElementById('username').focus();
正しい値のアラートが表示されますが、フォーム要素がフォーカスを受け取りません。これは、DOMの準備完了状態の検出に問題がないことを示しています。私が使用しようとしていた元のスクリプトは次のとおりです。
$(document).ready(function() {
$('input.focus:last').focus();
});
編集2/解決策:Fancybox固有の問題であると思われるため、Fancybox固有の解決策に頼らなければなりませんでした。これらのFancyboxiframedフォームの構成に次の行を追加しました。
'onComplete':function(){$('input.focus:last').focus();}