Странная проблема с лайтбоксом / iframe / Java-апплетом в Firefox - PullRequest
0 голосов
/ 14 января 2010

Я бьюсь головой от странной проблемы, используя комбинацию Java-апплета, работающего в iframe, отображаемом внутри лайтбокса в Firefox.

Когда страница отображается напрямую, вызов javascript апплету

document.appletname.send

Прекрасно функционирует, однако при вызове изнутри лайтбокса (на самом деле lightwindow ) возвращается ошибка

Error: document.appletname.send is not a function

Это происходит только в Firefox в Windows. IE, Safari и Chrome в порядке, как и Firefox на Ubuntu

Для информации апплет представляет собой презентацию Wirefusion 3D, и вы можете увидеть, как апплет работает через лайтбокс, нажав Highland Laddie 3D внизу страницы или непосредственно на странице содержащий лайтбокс .

Я попытался добавить диагностический код javascript, чтобы проверить, что апплет существует и имеет правильное имя (оно есть). Единственная странная вещь, которую я вижу, это то, что в Firefox апплет начинает загружаться дважды.

ДОБАВЛЕНО: В ответ на вопрос. Страница, вызываемая в лайтбоксе, очень проста, просто эта

<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. Я добавил код javascript в iframe для проверки, и он сообщает только об одном апплете на странице - поэтому апплет не может быть загружен дважды внутри страницы, в которую он встроен.

1 Ответ

0 голосов
/ 14 января 2010

Lightbox и клоны иногда вызывают проблемы, потому что они перемещают (или, в худшем случае, копируют) элементы DOM из своего контекста в контейнер Lightbox. Это может быть причиной загрузки IFRAME дважды.

Если бы апплет не был в IFRAME, я бы предположил, что Lightbox дублирует апплет, и все последующие вызовы document.appletname должны завершиться неудачей. Однако, если Java-апплет встроен в IFRAME, я не вижу, как это могло произойти. Возможно, вы ссылаетесь на апплет из-за пределов IFrame? Можете показать ссылочный код?

...