簡體   English   中英

用 XSLT 編寫 DHTML

[英]Writing DHTML with XSLT

HTML 由 XSLT 編寫。

  • 作為業余 XSLT 開發者

  • 我想將 javascript 塊寫入 HTML(頭部或身體)

  • 這樣可以在呈現 HTML 時執行腳本(瞧,DHTML)。

我知道如何在 XSLT 本身中使用腳本,但不知道 XSLT 如何將腳本塊寫入 DHTML。 我知道如何手動編寫 HTML,但我當然希望 XSLT 能夠完成繁重的工作。

下面的代碼是我期望的工作,但沒有。 它只是在頁面頭部顯示代碼。

<head>
    <title>My HTML</title>
    <msxsl:script type="text/javascript" version="1.3">
        <![CDATA[
            var coll = document.getElementsByClassName("collapsible");
            var i;

            for (i = 0; i < coll.length; i++) {
                coll[i].addEventListener("click", function() {
                this.classList.toggle("active");
                var content = this.nextElementSibling;
                if (content.style.display === "block") {
                    content.style.display = "none";
                    } else {
                    content.style.display = "block";
                    }
                });
            }
        ]]>
    </msxsl:script>
</head>

腳本顯示為文本

這是為 NHS 工作的,請非常漂亮...謝謝。

如果 HTML 您的 XSLT 創建的 HTML 腳本元素應該包含 HTML script元素,那么您將按照與使用headtitle元素相同的方式插入它。 In the XSLT, XSLT being XML, you would need to ensure your inline Javascript code doesn't break XML rules, as you have done with the CDATA section, but the script element would be a plain script element and not an msxsl:script element .

除此之外並使用xsl:output method="html" ,沒有什么特別的。

使用var coll = document.getElementsByClassName("collapsible");head部分中的特定代碼是有問題的並嘗試處理該集合應該在解析任何元素之前實現,但這是正確使用 Javascript 以及可能是事件處理程序或 function 調用而不是內聯代碼的問題。

Depending on where your XSLT is executed (client or server), the whole interaction of XSLT and Javascript can be brittle, adding script dynamically, even without XSLT, can be a challenge cross-browser.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM