2013-07-18 58 views
0

我期待的JavaScript文件加载到使用jQuery的iframe,但似乎我做的方式,检查他们在那里的DOM,但他们表现得好像他们是在父。下面是一些代码:如何加载到iframe中使用jQuery

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); 

parent.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中。当我查看萤火虫时,我在iframe的头部看到这些脚本,但是我在主窗口jQuery中看到了可拖动的函数,我没有在那里加载它。

的原因,我不希望它在主窗口的是,作为选择,当它跳跃远离对象,并点击时它会保持选定拖动,直到你再次点击它不能正常工作。

+0

是你加载来自同一服务器作为父来的内容? http://stackoverflow.com/questions/364952/jquery-javascript-accessing-contents-of-an-iframe –

+0

是的,他们是从同一个服务器来。我没有被拒绝的错误或任何东西。 – fanfavorite

回答

0

This question似乎正是我问。我改变了loadJS功能:

function loadJS(filepath,w) { 
    var script = page.document.createElement("script"); 
    script.type = "text/javascript"; 
    script.src = filepath; 
    page.document.head.appendChild(script); 
} 

通过在W变量应该是在这种类型的格式:

frames['contentFrame'].contentWindow 
0

这个工程:

$("#contentFrame").load(function(){ 
    function loadJS(filepath, iframe) { 
    console.log('loading: ', filepath); 
    var script = iframe.get(0).contentWindow.document.createElement("script"); 
     script.type = "text/javascript"; 
     script.src = filepath; 
    iframe.get(0).contentWindow.document.head.appendChild(script); 
    } 
    var fPage = $("#contentFrame"); 
    loadJS('jquery.min.js', fPage); 
    loadJS('jquery-ui.min.js', fPage); 
    loadJS('jquery.ui.draggable.min.js', fPage); 
    loadJS('somejsfile.js', fPage); 
}); 

也看看这个:Why does appending a <script> to a dynamically created <iframe> seem to run the script in the parent page?