跨瀏覽器的設定innerHTML方法

2021-04-08 12:34:31 字數 1116 閱讀 7162

很多人都可能遇到過這種情況:設定 innerhtml 的時候,插入的 html **中包含指令碼,但這些指令碼卻不生效,或者在 ie 上生效在其它瀏覽器上就不生效。原因很簡單:不同瀏覽器對插入 innerhtml 中的指令碼有不同的處理方法。經過實踐,歸納如下:

對於ie,首先 script 標籤必須帶 defer 屬性,其次在插入時刻,innerhtml 的所屬節點必須在 dom 樹中;對於 firefox 和 opera,在插入時刻,innerhtml 的所屬節點不可以在 dom 樹中。

根據上面結論,給出通用的設定 innerhtml 方法:

/*

* 描述:跨瀏覽器的設定 innerhtml 方法

* 允許插入的 html **中包含 script 和 style

[email protected]

>

* 日期:2006-06-26

* 引數:

* el: 合法的 dom 樹中的節點

* htmlcode: 合法的 html **

* 經測試的瀏覽器:ie5+, firefox1.5+, opera8.5+

*/window

.__el_stack=

;var

setinnerhtml

= function(el

, htmlcode

)elseel.

innerhtml

= htmlcode

; if(

el_next

)else}if

(ua

.indexof('

gecko')

< 0)

}document

.write

= function

()else

for(

vari= 0

; i

<

arguments

.length; i

++)}}

在這篇文章編寫之前,已經有乙個比較完善的解決方法《讓插入到 innerhtml 中的 script 跑起來》。比較起來,《讓》給出的方法考慮得更細緻,但處理起來比較繁瑣,效率不高。而這裡給出的方法則更簡單,並且充分利用了瀏覽器的特性。

瀏覽器設定跨域

由於專案前端使用8001埠,後端使用的8080埠,因此前端呼叫後端介面時需要跨域,在瀏覽器中需要設定跨域,否則會由於跨域安全性導致請求失敗。比如chrome中,需要新建乙個chrome瀏覽器的快捷方式,右鍵選擇屬性 新增 disable web security user data dir c ch...

谷歌瀏覽器跨域設定

一 49版本以前的設定 在桌面chrome快捷方式的屬性中的目標輸入框新增 disable web security 新增部分與前面字元之間有空格 二 49版本以後的設定 1.在電腦上新建乙個目錄,例如 c mychromedevuserdata 2.在屬性頁面中的目標輸入框裡加上 disable ...

chrome 瀏覽器跨域設定

關閉所有的chrome瀏覽器視窗 新建乙個chrome快捷方式,右鍵 屬性 快捷方式 選項卡裡選擇 目標 在之前的內容後空格增加以下內容 49版本以前 新增 args disable web security 49版本之後 先建立乙個臨時遊客資料夾,c users chrome mychromede...