jQueryを使用してjavascriptファイルをiframeにロードしようとしていますが、そこにあるDOMを調べているようですが、親にあるかのように動作します。コードの一部を次に示します。
somejsfile.js:
function createDraggable(draggableId){
if (jQuery.isFunction(jQuery.fn.draggable)) {
jQuery('#'+draggableId,fPage).draggable({
containment: '#contentArea',
iframeFix: true,
start: function() {
dragStart();
},
drag: function() {
dragHappening(draggableId);
},
stop: function() {
dragEnd(draggableId);
}
});
} else {
setTimeout(function(){createDraggable(draggableId)},100);
}
}
var fPage = $("#contentFrame").contents();
createDraggable(someElementId);
親.js:
function loadJS(filepath,w) {
if (!$("script[src*='"+filepath+"']",w).length) {
$("head",w).append('<script type="text/javascript" src="'+filepath+'"></script>');
}
}
var fPage = $("#contentFrame").contents();
loadJS('jquery.min.js',fPage);
loadJS('jquery.ui.min.js',fPage);
loadJS('jquery.ui.draggable.min.js',fPage);
loadJS('somejsfile.js',fPage);
現在、somejsfile.js ではjQuery('#'+draggableId,fPage).draggable({
機能しますが、jQuery('#'+draggableId).draggable({
機能しないため、実際には iframe に読み込まれていないと思われます。firebug を見ると、iframe の先頭にこれらのスクリプトが表示されますが、メイン ウィンドウの jQuery にドラッグ可能な関数が表示されますが、そこにはロードしていません。
メインウィンドウに表示したくない理由は、選択するとオブジェクトから飛び出し、クリックすると再度クリックするまでドラッグするために選択されたままになるため、正しく機能しないためです。