2012-03-23 215 views
0

我有一個鏈接,當我點擊它時調用一個帶有字符串參數的javascript函數。該字符串實際上是一個a-tag +腳本標記,如:如何正確使用innerHTML

<a>..</a><script>...</scipt> 

它顯示一個視頻文件。

因此,無論如何,JavaScript函數應該創建該代碼,並使視頻顯示在頁面上,但是當我按下鏈接時顯示的是一串代碼,所以它顯示爲文本(但部分它是一個超鏈接)並且不執行成爲視頻。

任何人都知道爲什麼?

它的怪異,因爲如果我複製代碼(顯示爲文本),並將其粘貼像正常的編輯器,則視頻顯示...

<a title="Click to Show Video" href='javascript:void(0);' onclick="switchFunc('{$thisNode/@*[name()=current()/@Name]}');"> 
    <div dir="{@Direction}" class="ms-rtestate-field"> 
     <xsl:value-of select="$thisNode/@*[name()=current()/@Name]" disable-output-escaping="yes"/> 
    </div> 
</a> 




<script type="text/javascript"> 
    function switchFunc(source) { 
    document.getElementById('videoContainer').innerHTML = source; 
    } 
</script> 

<div id="videoContainer"> </div> 
+0

這是什麼語法? – 2012-03-23 18:27:41

+0

它有一些來自微軟SharePoint的xls,它就像一個表示字符串的變量。 – sneaky 2012-03-23 18:29:21

+0

你可以在控制檯檢查字符串是如何格式化的嗎?我認爲這是xsl的一個問題,你也應該看看onclick字符串。 – NicoSantangelo 2012-03-23 18:30:23

回答

1

正如我在懷疑的評論說,你的屬性被編碼,所以你可以嘗試以下方法:

<a title="Click to Show Video" href='javascript:void(0);' > 
<xsl:attribute name="onclick">switchFunc('<xsl:value-of select="$thisNode/@*[name()=current()/@Name]" disable-output-escaping="yes"/>');</xsl:attribute> 
    <div dir="{@Direction}" class="ms-rtestate-field"> 
     <xsl:value-of select="$thisNode/@*[name()=current()/@Name]" disable-output-escaping="yes"/> 
    </div> 
</a> 
+0

剛試過這個,它仍然顯示爲文本。 – sneaky 2012-03-23 18:40:34

+0

這很奇怪,你能在這裏粘貼屬性值嗎? – NicoSantangelo 2012-03-23 19:14:02

0

你爲什麼不更新的innerHTML與你想要的標籤,並通過eval的JavaScript運行?

我不完全肯定它的XSLT部分,但這個想法是要分手的兩個部分(你曾說過,這是一個真正的<a>Anchor</a><script>Javascript</script>

HTML

<a title="Click to Show Video" 
    href='javascript:void(0);' 
    onclick="switchFunc('<a>Anchor</a>','Javascript');"> 

JS

<script type="text/javascript"> 
    function switchFunc(htmlValue, javascriptMethodCall) { 
    document.getElementById('videoContainer').innerHTML = htmlValue; 
    eval(javascriptMethodCall); 
    } 
</script> 
+0

我不明白你的意思,你能在這裏輸入代碼嗎? – sneaky 2012-03-23 18:30:25

+0

更新了我的意思 – 2012-03-23 18:33:09

+0

我將如何改變一個標籤,現在叫switchFunc? – sneaky 2012-03-23 18:37:24

0

無論輸出轉義設置如何,屬性值總是會被​​轉義,因爲內容可能會破壞XML文件的格式。

無論如何,核心架構在多方面存在問題。首先它將一些簡單的客戶端功能移動到服務器。加上這種方式,您可以將頁面的主要內容(視頻網址)封裝到腳本代碼中,從而將其隱藏在索引器中。

我是XSLT的一大樂趣,但怪異的外觀和代碼的硬可讀性表明某些東西不行。

一個可能的解決方案是註解方法:渲染控股形式存儲在他們數據 - 屬性關鍵信息項列表,讓JavaScript代碼(自己的或客戶端模板引擎)構建輸出。