2009-11-24 73 views
5

我有一個問題,如下所示:我們在應用程序中使用了豐富的文本編輯器(TinyMCE,但這並不重要)。現在,隨着Internet Explorer 8中,我們注意到,如果在內容類型,看起來像一個網址:Javascript:需要解決方法:Internet Explorer在更改href時更改鏈接文本

www.google.com

... IE瀏覽器幫忙,將其轉換爲通過一些本機到瀏覽器功能進行鏈接。現在,如果你真的想把它變成一個鏈接,並選擇編輯鏈接屬性,並設置href例如到

www.google.com/analytics

...然後在JavaScript的設置錨標記的href屬性的鏈接變化也文本。期望的結果是:

`<a href="http://www.google.com/analytics">www.google.com</a>` 

但實際上是:

`<a href="http://www.google.com/analytics">www.google.com/analytics</a>` 

有誰知道一個方法來解決此問題?

更新:此行爲僅在Internet Explorer 8和7中出現。Firefox,Chrome和Safari不受影響。這個問題也可以在TinyMCE網站http://tinymce.moxiecode.com/examples/full.php上觀察到,所以它可能不是TinyMCE配置問題。

+0

IE9的行爲方式是否相同?我在IE7&8中看到了這種行爲,但無法訪問IE9。 – Prembo 2012-01-30 05:31:03

回答

8

經過一番研究和調試,我發現問題是由Internet Explorer的內置行爲引起的。它會在設置鏈接的href屬性時出現,鏈接的文本內容看起來像是一個URL(根據IE)。在這些情況下,IE會將href-attribute的內容複製到鏈接文本中。

有可能是這幾個解決方法,但我發現,至少這個邏輯的工作原理:

  1. innerHTML到一個臨時變量,
  2. 設置href屬性像往常一樣
  3. 如果innerHTML已經更改,從臨時變量中複製原始innerHTML

這似乎工作,因爲更改鏈接的innerHTML不會導致更改href屬性。

在tinyMCE中,在函數的setAllAttribs()中找到以下行。在advlink插件的JS:

setAttrib(elm, 'href', href); 

...以及與此怪物替換爲:

if(tinyMCE.isMSIE) { 
    var tmp = elm.innerHTML; 
    setAttrib(elm, 'href', href); 
    if(elm.innerHTML != tmp) // optional, but keeps unnecessary innerHTML set:s away 
     elm.innerHTML = tmp; 
} 
else { 
    setAttrib(elm, 'href', href); 
} 

...和你的鏈接就會出現,如果不變。關於這一點,我也started a thread on the tinyMCE forums。如果他們對我的解決方案進行了一些改進或者說它是無稽之談,我也會更新這個問題。

0

需要了解更多信息:

  1. 是否表現在其他瀏覽器同樣的方式?
  2. 您是在富文本區域還是html視圖中輸入此值?
  3. 您是否正確配置了TinyMCE?聽起來就像你的特定實現中的一個錯誤 - 它不能正確解析HTML標籤。
+0

嗨,評論對話框不支持降價,我注意到。 (1)這個問題只發生在Internet Explorer中,而我只嘗試了版本8.(2)我將文本輸入到富文本區域,但它的工作原理與第一次在HTML源代碼中創建鏈接時相同然後編輯它。 (3)我認爲問題不在於TinyMCE配置。您可以在他們的示例網站上重現問題:tinymce.moxiecode.com/examples/full.php – Manne 2009-11-24 15:25:09

+0

我在IE 7中看到完全相同的行爲。您確定這不是tinyMCE的功能嗎? – 2009-11-24 15:51:28

+0

我明白了!我在Firefox,Chrome和Safari上嘗試過,他們都沒有表現出這種行爲。它幾乎看起來像是TinyMCE的一個「特徵」,它現在只能在IE中使用。我沒有看到Internet Explorer在其他文本區域執行此操作,所以我幾乎可以肯定它是TinyMCE的一個「特性」,在這種情況下,可能會在配置中關閉它。看看他們的文檔,看看。我個人以前沒有看到過,但實際上我發現它很有用:) – Joshua 2009-11-24 16:30:22