2011-05-24 53 views
0

我創建了一個包含一些嵌入式JavaScript的XSL樣式表。它調用函數,然後調用document.write()將這些函數的結果打印到頁面上。無法在XSLT樣式表(Firefox)中使用document.write

<xsl:foreach...> 
<div class="directionBlock"> 
<script type="text/javascript">writeDirection('<xsl:value-of select="Direction"/>');</script> 
</div> 
</xsl:foreach...> 

不幸的是,在firefox中,不支持document.write()。該怎麼辦?

+1

- 腳本標記上的語言屬性應該標識腳本語言,而不是MIME類型。另外,它在上面的代碼中拼寫錯誤。 - Firefox中支持document.write - 答案的線索位於錯誤控制檯中。 - 您的示例代碼中沒有document.write。 – Mel 2011-05-24 15:30:57

+2

XSL樣式表非常不可能調用document.write。更可能的是,它會生成一個HTML腳本元素,該元素在激活時會調用document.write。差異是相當重要的。 – 2011-05-24 16:03:37

+0

1.謝謝你。將更正。我打算輸入script type =「text/javascript」/> 2.正確。是。我有一個

1

爲什麼你需要同時使用XSLT和Javascript來輸出HTML?如果您的目標是輸出div中包含script元素的內容,請考慮單獨使用XSLT。如果您確實需要使用Javascript創建內容,請考慮使用類似createElementappendChild而不是document.write的方法。 只要一般答案可以提供幫助,如果您需要特定的幫助,那麼我們需要查看代碼的詳細信息,例如writeDirection函數以及您傳遞給它的參數。

爲了給你一些示例代碼的概述,如果你的writeDirection函數需要添加內容到div然後把一個id放在div上例如<div id="db1" class="directionBlock">...</div>,然後將它傳遞給writeDirection函數,例如<script type="text/javascript">writeDirection('<xsl:value-of select="Direction"/>', document.getElementById('db1'));</script>,然後在功能根本就

function writeDirection(dir, elementToWriteTo) { 
    // instead of document.write(stuff) use 
    var span = document.createElement('span'); 
    span.innerHTML = stuff; 
    elementToWriteTo.appendChild(span); 
} 
+0

謝謝你。這正是我最終做的。需要調用JavaScript的原因是因爲客戶端需要複雜的輸出數據格式。 – Spider 2011-05-25 17:02:02