Javascript jquery thickbox引用问题

Javascript jquery thickbox引用问题,javascript,reference,null,document,colorbox,Javascript,Reference,Null,Document,Colorbox,完全重申了我的问题: 问题:在Mozilla firefox 3.6和4.0中丢失对iFrame的引用 更多信息: -在internet explorer 8 64位和32位版本中工作正常 如何繁殖?在Mozilla中:打开编辑器手风琴菜单。单击“编辑器打开”链接,在编辑器中填写一些随机文本,然后单击“bestand Opslan”。填写姓名并单击“保存”。编辑器的内容将以HTML格式下载 通过在“保存文件”对话框外部或指定按钮上单击以关闭该对话框。再次单击“bestand Opslan”按钮,

完全重申了我的问题:

问题:在Mozilla firefox 3.6和4.0中丢失对iFrame的引用

更多信息: -在internet explorer 8 64位和32位版本中工作正常

如何繁殖?在Mozilla中:打开编辑器手风琴菜单。单击“编辑器打开”链接,在编辑器中填写一些随机文本,然后单击“bestand Opslan”。填写姓名并单击“保存”。编辑器的内容将以HTML格式下载

通过在“保存文件”对话框外部或指定按钮上单击以关闭该对话框。再次单击“bestand Opslan”按钮,并尝试将内容保存到文件中。你不会看到任何事情发生

IE8中没有问题。试着在那里打开它

Firebug在您第二次打开“保存”对话框时告诉我:

iFrame.document is null
示例链接:

更多信息: -从thickbox切换到colorbox以尝试解决此问题,因为thickbox现在很长时间不受支持。 -colorbox给了我同样的问题,所以我不认为是这个。 -尝试通过谷歌搜索iframe引用错误等,但未找到任何结果。 -尝试将iframe代码放在由colorbox脚本调用的div之外,它保留了它的引用,但当我将它放回该div内部时就没有了

感谢:JohnP,他提出要就此展开一场“狩猎”

编辑:

我认为saveFile.php文件可能会给iframe的父级带来麻烦,但在将其从editor.php脚本中的action变量中删除后,再次打开对话框后,它仍然会失败,并出现相同的错误


是否有人可以编写一个脚本,按名称遍历iframe,并在找到rignt iframe时将其引用到var?我想尝试一下,但不知道如何使用..

我无法解释为什么第一次在Firefox上使用它,但在Firefox中用于获取iframe的函数与IE不同:

因此,将JavaScript函数“saveToFile”替换为:

function saveToFile() {
    var saveAsFileName = document.getElementById('saveAs_filename').value;
    var currentContent = tinyMCE.editors["editor_textarea"].getContent();
    var editorFileName = document.getElementById('editor_filename');

    var iFrameTag =  document.getElementById('saveAs_Iframe');
    var iFrame;
    if ( iFrameTag.contentDocument ) 
    { // FF
        iFrame = iFrameTag.contentDocument;
    }
    else if ( iFrame.contentWindow ) 
    { // IE
        iFrame = iFrameTag.contentWindow.document;
    }

    var inframeEditorFileName = iFrame.getElementById('editor_filename');
    var inframeEditorContent = iFrame.getElementById('editor_textarea');

    editorFileName.value = saveAsFileName;
    inframeEditorFileName.value = saveAsFileName;
    inframeEditorContent.value = currentContent;

    iFrame.editor_self.submit();
}
我用Firebug替换了这个函数,它对我很有用

更新: 由于jQuery,您还可以使用更简单的交叉浏览器解决方案:

function saveToFile() {
    var saveAsFileName = document.getElementById('saveAs_filename').value;
    var currentContent = tinyMCE.editors["editor_textarea"].getContent();
    var editorFileName = document.getElementById('editor_filename');
    editorFileName.value = saveAsFileName;

    $("#saveAs_Iframe").contents().find("#editor_filename").val(saveAsFileName)
    $("#saveAs_Iframe").contents().find("#editor_textarea").val(currentContent)
    $("#saveAs_Iframe").contents().find("form[name=editor_self]").submit();
}

它似乎就是把事情弄得一团糟的Ajax.js文件。在InternetExplorer8中,当我在加载div中tinyMCE编辑器的textarea的链接上单击两次时,我将丢失该链接的处理程序。我真的不知道ajax脚本是如何工作的,但我正在考虑寻找另一个脚本,希望它不会把事情搞砸。我从php页面删除了该脚本,并插入了这个漂亮的jquery代码:注释似乎不会显示代码,因为它们不是为它而设计的。但是jquery代码有11行,效果非常好。现在,我可以打开/关闭/打开/关闭thickbox,但在单击问题顶部执行jscript的按钮后,它仍然会将引用变量丢失到iframe。$%)$*#非常令人沮丧=]但至少我有更干净的代码!继续解决你的问题和更新,这是很好的工作。这比这里的一些人做的还要多。你可能想用其中的最新信息来清理你的问题,这样你就可以保留一个历史记录,这样你就不用担心旧问题了。nx,我刚刚更新了。我感觉我离问题的根源越来越近了。它似乎越来越像某种虫子。。。因为我第一次得到推荐信,第二次就没了。这很奇怪,因为id和代码在此期间没有变化,所以理论上这种行为不应该发生!我很困惑。真的需要有更多javascript知识的人。它很有效!:天哪。。太棒了。我特别喜欢cross broswer jquery代码。很不错的。我不知道在firefox中你必须使用.contentDocument。是的,很奇怪,第一次可以,但第二次不行。。可能是一个不推荐使用的函数或其他东西。我会确保mozilla的员工知道这一点。并向您发送+100代表以解决此问题!:)@很高兴能帮忙@谢谢:)