2011-11-23 42 views
1

以下腳本在Firefox中正常工作,但在IE 8中崩潰且出現「未知運行時錯誤」錯誤。使用YUI更改IE 8中的腳本標記的內容

YUI().use('node', function (Y) { 
    if (Y.one('#testel') == null) { 
     Y.one('head').append(Y.Node.create('<script id="testel" />')); 
    } 
    Y.one('#testel').set('text', 'Wish this would work in IE!'); 
    console.log(Y.one('#testel').get('text')); 
}); 

我與它玩耍了像IE嘗試新事物:「意外的調用方法或屬性訪問」

Y.one('#testel').set('innerHtml', 'Wish this would work in IE!'); 
Y.one('#testel').set('html', 'Wish this would work in IE!'); 
Y.one('#testel').setContents('Wish this would work in IE!'); 

唯一的區別是,有時它賦予了更多有用的錯誤,這導致我認爲腳本標記的文本不能在IE中更改?

雖然四處搜索,但在處理IE中的表格元素時發現了很多對上述問題的引用,但這些情況下的解決方法似乎並不適用於腳本標記。

有什麼辦法可以在IE中實現上述功能嗎? (我只在IE 8中測試過,但我認爲問題在6,7中是一樣的)。

謝謝!

回答

0

這是一個解決問題的工作,並在IE 8中工作(還沒有檢查6,7)。

看起來你只能在創建腳本標記時設置文本,所以不是試圖像問題中的代碼那樣更新文本,而是隨時刪除並重新創建腳本標記,以便隨時更改文本(這也適用於FF)。

因此,例如:

YUI().use('node', function (Y) { 

    var writeToScript = function(text) { 
     if (Y.one('#asdf') != null) 
      Y.one('#asdf').remove(); 
     Y.one('head').append(Y.Node.create("<script id='asdf'>"+ text + " </script>")); 
    } 

    writeToScript("Hello there!"); 
    console.log(Y.one('#asdf').get('innerHTML')); 
    writeToScript("How are you?"); 
    console.log(Y.one('#asdf').get('innerHTML')); 
    writeToScript("Goodbye"); 
    console.log(Y.one('#asdf').get('innerHTML')); 
}); 

但是,如果任何人都可以解釋爲什麼設置文本不工作作爲問題陳述或者如果你有另一種方式來做到這一點,不會刪除/重新添加(這對性能不利?),請添加您的答案,我將投票!周圍的工作使這不那麼緊迫,但我仍然好奇!

相關問題