2013-07-18 3 views
2

У меня есть клиент, использующий один из наших скриптов для написания тегов апплетов на веб-странице с помощью document.write(). Скрипт работает на всех наших машинах разработки, на всех других клиентских машинах и на домашней машине этого клиента. Но когда он запускается на рабочей машине, document.write() не выполняется.document.write() не работает на одной машине, работает на других

Кроме того, тег апплета отлично работает, если он написан в формате HTML. Это происходит только при написании файла document.write. Чтобы протестировать, мы взяли рабочий файл, который содержал barebones HTML, поместил тег апплета в одну строку и заключил его в document.write(). Плагин Java не инициализировался, что указывает на то, что document.write блокируется или сбой, не связанный с тегом апплета.

Какие причины я должен исследовать или что мне не хватает?

Машина Mac работает под управлением Ubuntu на виртуальной машине. Веб-страница, содержащая скрипт, обслуживается Tomcat 7, работающим на Ubuntu. Мы протестировали страницу на Firefox и Chrome на виртуальной машине Ubutu и на Firefox и Safari на хост-машине Mac. Ни один из них не запускал файл, используя document.write().

Известный document.write отключен в XHTML, но я не вижу, как страница может анализироваться как XHTML. Файл не содержит деклакаций doctype, поэтому его следует анализировать как стандартный HTML. Я также спросил, были ли изменены типы MIME (в случае, если расширение .htm было сопоставлено типу mime XHTML), но они этого не сделали.

У меня нет доступа к его тестовый файл, но это было по существу эквивалентно:

<html> 
<head> 
    <title>Heat Map Explorer 2012</title> 
</head> 
<body style="margin: 0"> 
<script language="JavaScript"> 
document.write('<applet code="com.labescape.explorer.applet.HeatMapExplorerApplet.class" name="com.labescape.explorer.applet.HeatMapExplorerApplet" archive="resources/lib/explorer-applet-2012.2100.jar" height="100%" width="100%" border="0" mayscript="true"><param name="[email protected]" value="" /><param name="[email protected]" value="interfaces/cluster.xml,maps/machines.xml,resources/config/looks-jgoodies.xml,license.xml" /><param name="[email protected]" value="resources/schemas/schema-swing.xml,resources/schemas/schema-hme.xml,resources/schemas/schema-looks.xml" /><param name="profiling" value="false" /><param name="java_arguments" value=" -Xmx256m" /><param name="separate_jvm" value="false" /></applet>'); 
</script> 
</body> 
</html> 
+0

Кроме того, мы проверили консоль и не было синтаксических ошибок, поэтому JavaScript был правильно разобран. Проблема, похоже, связана с выполнением метода. –

ответ

0

«Файл не содержит объявления DOCTYPE, поэтому следует быть разобраны в качестве стандартного HTML.»

Можете ли вы явно указать doctype и проверить его?

«Кроме того, апплет тег работает прекрасно, если это написано в HTML. Он не может только тогда, когда она написана с помощью document.write.»

, чтобы проверить, является ли проблема с document.write() или document.write («») попытаться написать что-то вроде document.write («привет мир»)

2

нет синтаксических ошибок в консоли не означает, что javascript был успешно проанализирован, он также не мог быть проанализирован вообще (что соответствовало бы результатам, которые вы видите).

Я бы попробовал изменить свой тег сценария, удалив атрибут языка (он был deprecated) и вместо этого использовал атрибут type со значением text/javascript.

<script type="text/javascript">document.write(/* Applet Content */);</script>

+0

+1 для обозначения атрибута языка и ссылки на устаревание. Сохраняет мне время :) – Shane

0

Вы должны объявить Document DOCTYPE избегать браузеров запускающих режимов совместимости бесшумно.

Но у этого есть свои компромиссы: специально с IE некоторые доктрины запускают режим совместимости, ломая вещи, которые уже работали для XHTML. CSS-селектора или даже код javascript. Вам нужно пересмотреть все стили и функциональные возможности.

  • Вот Test Code что упоминает `(StackOverflow в документе DOCTYPE).

  • Here, это еще один, который упоминает HTML 4:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

  • Вот информация о DOCTYPE и Compatibility Modes на IE.

Смежные вопросы