2

我有一个客户使用我们的一个脚本使用 document.write() 将小程序标签写入网页。该脚本适用于我们所有的开发机器、所有其他客户机器以及该客户的家用机器。但是当在他的工作机器上运行时,document.write() 不会执行。

此外,如果applet 标记是用HTML 编写的,那么它的工作非常好。只有在使用 document.write 编写时才会失败。为了进行测试,我们获取了一个包含准系统 HTML 的工作文件,将 applet 标记放在一行中,并将其包含在 document.write() 中。Java 插件未初始化,这似乎表明 document.write 被阻止或失败,与小程序标签无关。

我应该调查什么原因或我错过了什么?

该机器是在虚拟机中运行 Ubuntu 的 Mac。包含脚本的网页由在 Ubuntu 上运行的 Tomcat 7 提供服务。我们在 Ubutu 虚拟机上的 Firefox 和 Chrome 以及 Mac 主机上的 Firefox 和 Safari 上测试了该页面。这些都没有使用 document.write() 运行文件。

我知道 document.write 在 XHTML 中被禁用,但我看不到如何将页面解析为 XHTML。该文件不包含 doctype 声明,因此应该被解析为标准 HTML。我还询问是否修改了 MIME 类型(以防 .htm 扩展名映射到 XHTML mime 类型),但他们没有。

我无权访问他的测试文件,但它基本上等同于:

<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="applet.config@paths" value="" /><param name="config@files" value="interfaces/cluster.xml,maps/machines.xml,resources/config/looks-jgoodies.xml,license.xml" /><param name="config.schema@files" 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>
4

3 回答 3

2

控制台中没有语法错误并不意味着 javascript 已成功解析,它也可能根本没有被解析(这与您看到的结果相符)。

我会尝试通过删除语言属性(它已被弃用)来更改您的脚本标签,而是使用值为text/javascript.

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

于 2013-07-18T03:20:24.117 回答
0

您必须声明DocumentDOCTYPE以避免浏览器静默触发兼容模式

但这有它的取舍:特别是在 IE 中,一些 doctypes 触发了兼容模式,破坏了已经为 XHTML 工作的东西。CSS 选择器甚至 javascript 代码。您需要重新检查所有样式和功能。

  • 这是一个提到`(stackoverflow的文档DOCTYPE)的测试代码。

  • 在这里,另一个提到 HTML 4:

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

  • 这是有关IEDOCTYPE兼容模式的信息。

于 2013-07-18T03:23:13.160 回答
0

“该文件不包含 doctype 声明,因此应该被解析为标准 HTML。”

您可以明确指定文档类型并对其进行测试吗?

“此外,如果 applet 标记是用 HTML 编写的,它就可以很好地工作。只有在使用 document.write 编写时它才会失败。”

测试问题是否与 document.write() 或 document.write('') 尝试编写类似 document.write("hello world")

于 2013-07-18T03:20:03.170 回答