1
我必須在iframe中顯示的HTML文檔中更改部分文本的樣式。從iframe獲取文本並設置範圍
我有一個json文件,其中應該修改文本的開始/結束/ id。
我的問題是我無法設置文本範圍。
var r = document.createRange();
var node = document.getElementById("file").contentWindow.document.getElementById("d1e152");
r.setStart(node, 0);
r.setEnd(node, 12);
文件是iframe的ID,而d1e152是段落的ID。 它返回「TypeError:Range.setStart的參數1不是一個對象。」 r.setStart()行錯誤。
它似乎工作,但得到這個'TypeError:Range.setStart的參數1不是一個對象。如果我將'.style.color ='#00CC00'(僅用於測試)追加到'iframeDoc.getElementById(「d1e152」)',它會起作用並且文本被着色。謝謝你的幫助 – Ciotto
@Ciotto:一定還有其他事情正在發生,因爲你所看到的錯誤只有在'node'爲空或者其他非對象的情況下才會發生,如果你嘗試訪問,你會得到一個錯誤它的'style'屬性。 –
我注意到有時候有效,有時候不行。我試過這個:'var iframedoc = document.getElementById(「file」)。contentWindow.document; \t \t \t的setTimeout(函數(){ \t \t \t \t變種R = iframedoc.createRange(); \t \t \t \t VAR節點= iframedoc.getElementById( 「d1e152」); \t \t \t \t r.setStart( 0); \t \t \t \t r.setEnd(node,5); [other.code],500);'它只有在沒有'setTimout()'函數的情況下才有效。也許我用錯了位置?但我非常確定,只有在加載iframe時才運行此代碼,因爲我在此函數之前執行了一些控制。 – Ciotto