我正在使用在Firefox上的灯箱内显示的iframe中运行的java applet的组合来打击奇怪的问题。
当页面直接显示javascript调用applet
时document.appletname.send
完美的功能,但是当从lighbox(实际上是lightwindow)内部调用时,则会返回错误
Error: document.appletname.send is not a function
这仅适用于Windows中的Firefox。 IE,Safari和Chrome都很好,就像Ubuntu上的Firefox一样
有关信息,applet是一个Wirefusion 3D演示文稿,您可以通过点击Highland Laddie 3D at the bottom of the page或直接在page containing the lightbox中看到通过灯箱框运行的小程序。
我尝试添加javascript诊断代码来检查applet是否存在且名称是否正确(确实如此)。我能看到的唯一奇怪的事情是,使用Firefox,applet似乎开始加载两次。
增加:回答问题。在灯箱中调用的页面非常简单,只需
<div style="position:absolute; top:0px; left:0px">
<iframe id="mainframe"
src="http://www.tartanweb.com/laddie/highlandladdie.php" width="730px" height="670px" scrolling="no">
<p>Your browser does not support iframes.</p>
</iframe>
</div>
<div style="position:absolute; top:15px; left:600px; z-index:1; width:30px;" >
<a href="blank-width.html" class="lightwindow_action" rel="deactivate"><input type="button" value="Close"></a>
</div>
所以只有iframe本身和一个关闭按钮。麻烦的javascript代码是iframe调用的页面。我在iframe中添加了javascript代码进行检查,它只报告了页面中的一个applet - 因此applet无法在其嵌入的页面内加载两次。
答案 0 :(得分:0)
Lightbox和克隆有时会引起麻烦,因为它们将DOM元素从其上下文移动到Lightbox容器中(或者在最坏的情况下,将其复制)。这可能是因为IFRAME被加载了两次。
如果applet不在IFRAME中,我猜想Lightbox会复制applet,所有后续的document.appletname
调用都必须失败。但是,如果Java Applet嵌入在IFRAME中,我无法看到它是如何发生的。您是否可以从IFrame外部引用Applet?你能显示引用代码吗?