Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.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
java小程序如何访问同一页面中的iframe?_Java_Javascript_Iframe_Applet - Fatal编程技术网

java小程序如何访问同一页面中的iframe?

java小程序如何访问同一页面中的iframe?,java,javascript,iframe,applet,Java,Javascript,Iframe,Applet,我在同一页中有一个applet和一个iframe。iframe标记有一个onload属性,每当iframe页面更改时,该属性都会调用applet中的方法。小程序需要访问iframe文档的元素,并计算页面上不同类型标记的数量 我在访问iframe的applet中有以下代码 Class c = Class.forName("com.sun.java.browser.plugin2.DOM"); Method m = c.getMethod("getDocument", new Class[]{jav

我在同一页中有一个applet和一个iframe。iframe标记有一个onload属性,每当iframe页面更改时,该属性都会调用applet中的方法。小程序需要访问iframe文档的元素,并计算页面上不同类型标记的数量

我在访问iframe的applet中有以下代码

Class c = Class.forName("com.sun.java.browser.plugin2.DOM");
Method m = c.getMethod("getDocument", new Class[]{java.applet.Applet.class});
Object obj = m.invoke(null, new Object[]{this});
HTMLDocument doc = (HTMLDocument)obj;

NodeList nodeList = document.getElementsByName("iframe");
if (nodeList.getLength()>0) {
    Node node1 = nodeList.item(0);
    if (node1 instanceof HTMLIFrameElement) {
        Document doc = ((HTMLIFrameElement)node1).getContentDocument();
            if (doc instanceof HTMLDocument) {
                document = (HTMLDocument)doc;
                if (document.hasChildNodes() {
                    // do some stuff
                }
            }
        }
    }
}
如果该脚本在页面第一次加载时运行,它工作正常-它访问iframe的代码,并且可以访问页面中的每个元素

但是,当从iframe的onload属性调用applet代码时,applet无法正确读取文档。 它引发以下异常:

netscape.javascript.JSException: No such property "hasChildNodes" on JavaScript object
我两次都在访问完全相同的文档,那么为什么在使用onload时它会失败呢?我有什么办法可以绕开这件事吗

  • 图1显示了如何在JavaScript中执行此操作
  • 将其封装在JS函数中
  • 从小程序中调用函数
  • 这样,至少单独调试JS和/或JS/applet交互更容易


    JavaScipt无法访问iframe的DOM,因为它位于单独的服务器上,但小程序可以

    我认为安德鲁的想法是对的。JS可以访问其他服务器上的内容


    要与跨域iframe进行通信,您可能还需要研究类似的内容。

    JavaScipt无法访问iframe的DOM,因为它位于单独的服务器上,但小程序可以,这就是我这样做的原因。据我所知,没有其他方法可以找到iframe的内容。。。这就是为什么我在重新加载页面时遇到了麻烦,这让人非常恼火!Java对网页所做的一切基本上都是由JS在幕后处理的。因此,如果JS不能做到这一点,我会对小程序能做到感到惊讶。这也让我感到困惑-但小程序肯定可以访问iframe,即使它不应该。。。