Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查是否使用javascript加载了框架?-不是onload,不是iframe_Javascript_Frame_Compatibility - Fatal编程技术网

如何检查是否使用javascript加载了框架?-不是onload,不是iframe

如何检查是否使用javascript加载了框架?-不是onload,不是iframe,javascript,frame,compatibility,Javascript,Frame,Compatibility,问题:旧的知识库软件,无论出于何种原因,其链接已断开。它是一系列嵌套的框架。有些指向正确的目标,有些指向不正确的目标,还有许多指向错误的目标。当知识库不能顺利运行时,使用它会变得很麻烦 我试图完成的内容:我想确定特定帧何时加载,然后解析帧的文档,用正确的HREF和目标替换锚定标记 资源和限制:我可以访问一些.aspx页面。我的目标现在包含一个framset,用于加载knowledgebase文档。但是,此框架的src似乎不是实际的.aspx页面(物理文件)-不确定它是如何生成的,也不确定文档是如

问题:旧的知识库软件,无论出于何种原因,其链接已断开。它是一系列嵌套的框架。有些指向正确的目标,有些指向不正确的目标,还有许多指向错误的目标。当知识库不能顺利运行时,使用它会变得很麻烦

我试图完成的内容:我想确定特定帧何时加载,然后解析帧的文档,用正确的HREF和目标替换锚定标记

资源和限制:我可以访问一些.aspx页面。我的目标现在包含一个framset,用于加载knowledgebase文档。但是,此框架的src似乎不是实际的.aspx页面(物理文件)-不确定它是如何生成的,也不确定文档是如何存储的。我看到列出了src,但在我有权访问的Web服务器上找不到它

基本信息:页面是使用.aspx加载的(我不太理解其中的部分内容,也无法访问更深入的内容)。.aspx页面有一个在加载页面时生成的框架集

.aspx文件中的Framset代码示例:

    <FRAMESET id="FrameSetMainView" runat="server" border="0" framespacing="0" frameborder="0">
    <!-- This frame set is defined and generated in the code -->
    </FRAMESET>
其他解决方案?

使用onreadystatechange事件 是的,有一种可靠的方法可以解决这个问题,而无需借助计时器或其他滴答声。当页面加载时,为每个帧“onreadystatechange”事件分配一个处理程序。您还必须调用它一次,以确保它应用于已加载的帧。下面的代码在IE兼容模式5、7、8、9、10下进行了测试,并按预期工作(在IE11中失败)。它还测试了缓慢加载的框架,没有问题

参考文献:


演示
window.onload=函数(){
对于(var i=0;i
您看过1998年的这篇文章吗:它似乎是您问题的解决方案。@damo-s-正如文章中提到的,我不是实际加载框架的人,而这同一框架在各种嵌套框架中使用,因此这段代码实际上没有用。我很感激,不过老实说,我在搜索任何不适用于现代浏览器的好东西时遇到了困难。不管怎样,把答案标注在下面。哦,我错过了帖子中的那部分。很高兴你找到了一个解决方案。很好-这看起来很完美,而且肯定更符合我想要做的。谢谢你的提示。我已经有代码来修复底层框架中的锚——只是无法确定何时可以顺利运行。
    <SCRIPT>
    function load(){
        var frameset = window.frames;
        if(frameset.length > 0){ // frames have loaded - commence replacement

        }else{ // frames not loaded
            setTimeout(load,1000); // wait 1 sec, try again
        }
    }

    load();
    </SCRIPT>