2013-07-18 107 views
2

我有一位客戶使用我們的腳本之一使用document.write()將小應用程序標記寫入網頁。該腳本適用於所有開發機器,所有其他客戶機器以及該客戶的家用機器上。但是當在他的工作機器上運行時,document.write()不會執行。document.write()不在一臺機器上工作,在其他機器上工作

此外,如果使用HTML編寫applet標籤,它的工作效果會很好。它只有在使用document.write寫入時纔會失敗。爲了測試,我們使用了一個包含準系統HTML的工作文件,將applet標記放在一行中,並將其包含在document.write()中。 Java插件沒有初始化,這似乎表明document.write正在被阻止或失敗,與applet標記無關。

我應該調查什麼原因或缺少什麼?

該機器是在虛擬機中運行Ubuntu的Mac機。包含該腳本的網頁由在Ubuntu上運行的Tomcat 7提供服務。我們測試了Ubutu虛擬機上的Firefox和Chrome以及Mac主機上的Firefox和Safari上的頁面。這些都沒有使用document.write()運行文件。

我知道document.write在XHTML中是禁用的,但我沒有看到如何將頁面解析爲XHTML。該文件不包含文檔類型聲明,因此應該將其解析爲標準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="[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編寫 ,applet標記完全正常工作,但只有在使用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瀏覽器,一些doctypes觸發兼容模式,打破已經爲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">

  • 下面是有關DOCTYPECompatibility Modes上IE。

相關問題