日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

html script src属性,动态修改script标签中的src属性存在的问题

發布時間:2024/3/12 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 html script src属性,动态修改script标签中的src属性存在的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天某個同事遇到一個詭異的問題,問題描述如下:

需求:通過腳本動態修改script標簽的src來載入一段外部腳本并執行

實現方式(#1):

document.getElementById('external-script').src='url2';

url2的內容如下:

alert('I am dynamic');

結果:

Chrome: 什么事都沒發生(沒有請求url2)

Firefox: 什么事都沒發生(沒有請求url2)

IE9:什么事都沒發生(請求url2但不執行url2的腳本)

IE(6,7,8): I am dynamic(請求并執行了url2的腳本)

注意實現方式中,第一段的script標簽中間是有內容的(空格、換行符以及回車符)。

如何來解釋這個問題呢?要解釋這個問題,我們來看兩個變種的例子,第一個例子(明確內聯內容),如下所示(#2):

alert('I am inline');

document.getElementById('external-script').src='url2';

結果如下:

Chrome: I am inline(沒有請求url2)

Firefox: I am inline(沒有請求url2)

IE9:I am inline(請求url2但不執行url2的腳本)

IE(6,7,8): I am inline I am dynamic(請求并執行了url2的腳本)

再來看看第二個變種的例子(#3):

alert('I am inline script');

document.getElementById('external-script').src='url2';

其中url1的內容如下:

alert('I am url1');

結果如下:

Chrome: I am url1(沒有請求url2)

Firefox: I am url1(沒有請求url2)

IE9:I am url1(請求url2但不執行url2的腳本)

IE(6,7,8): I am url1 I am dynamic(請求并執行了url2的腳本)

首先這里肯定的是src屬性是修改成功的,可以通過看dom的變化看到src已經設置進去了。這個時候我們比對這三個例子,思考幾十秒。分析下這三個例子,其實#2和#1是一樣的,這里用#2是為了說明#1中的空格、換行符以及回車符會被瀏覽器認為是內聯的腳本。通過比對#2和#3,是不是會讓你想到什么?沒錯,我們第一個會想到的就是:當script標簽既有src屬性又有內聯腳本的時候瀏覽器該如何處理? , 先來解釋這個問題。

一談到瀏覽器應該怎樣處理,就不得不翻出各種寶典,這次不再是葵花寶典了,而是九陰真經(W3C的HTML4標準),標準中關于script標簽的src部分有如下一段話:

If the src attribute is not set, user agents must interpret the contents of the element as the script. If the src has a URI value, user agents must ignore the element's contents and retrieve the script via the URI

上面這段話的意思就是說:如果src沒有設置,那么就執行內聯腳本,如果src設置了瀏覽器就必須忽略內斂腳本而要去請求src指定的url的內容

這解釋了為什么#3中標準瀏覽器(甚至IE6,7,8)都沒有執行內聯腳本(因為src設置了url1)。

搞清楚了這個基礎問題之后,接下來問題就定位到了動態修改script的src屬性的時候瀏覽器如何處理? ,從結果來看,標準的瀏覽器都沒有去請求url2(更改src無效),這回IE6,7,8終于犯傻了。當然了,咱們也不能隨隨便便說人家犯傻,要拿出證據,這個時候繼續拿出九陰真經W3C的HTML5標準,其中有這樣一句話:

Changing the src, type, charset, async, and defer attributes dynamically has no direct effect; these attribute are only used at specific times described below.

意思就是說:修改src是沒用的,對src的處理只會在特定的時候進行(個人猜測就是第一次看到這個屬性的時候瀏覽器會去做相應處理,之后就無視它了)。

好了,這下真相大白了:這解釋了為啥#3和#1中除了IE6,7,8之外其他瀏覽器都沒有去請求url2(IE9請求了,但沒執行),而且實驗發現IE6,7,8對動態修改src都會做請求執行處理。

最后,這個故事至少告訴我們:寫script標簽的時候千萬別手賤打回車。

參考文檔:

總結

以上是生活随笔為你收集整理的html script src属性,动态修改script标签中的src属性存在的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲av无码国产在丝袜线观看 | 我要看一级黄色片 | 欧美久久一区二区三区 | 国产艳妇疯狂做爰视频 | 国语毛片| 黄色一级免费片 | 欧美国产精品 | 成人午夜视频免费看 | 国产精品入口麻豆 | 日韩成人在线影院 | av中文字幕一区二区三区 | 久久96视频 | 好吊日av | 精品免费一区二区 | 午夜色播 | 老司机在线永久免费观看 | 精品一区二区三区不卡 | 秋霞黄色网 | 99视频免费 | 奇米影视第4色 | 日韩精品在线观看一区二区三区 | 青娱乐av在线 | 黄色av网址在线观看 | 天天操天天操天天操 | 国产日韩在线播放 | 亚洲免费色| 韩国三级中文字幕 | 国产区网址 | 性欧美最猛 | 欧美俄罗斯乱妇 | 日日干日日爽 | 二区久久| 高清日韩一区二区 | 国产乱码精品一区二区三区亚洲人 | 欧美男女交配 | wwwxx日本 | 在线观看国产日韩 | 国产又粗又黄又爽又硬的视频 | jizz中国女人 | 色男人天堂av | 苏晴忘穿内裤坐公交车被揉到视频 | 国产一级二级三级视频 | 男插女动态图 | 大香蕉精品一区 | 天天碰天天 | 韩国成人免费视频 | 日韩插插插 | 黄网站免费大全入口 | 国产精品99久久免费黑人人妻 | 欧美日在线 | 好吊视频在线观看 | 国产最新地址 | 中日韩在线播放 | 国产视频久久 | 中文字幕亚洲无线码在线一区 | 欧洲成人免费视频 | 国产欧美一区二区精品性色超碰 | 亚洲少妇精品 | 日韩av日韩 | 国产高清一区二区三区四区 | 精品成人免费一区二区在线播放 | 国产亚洲精品成人av久久ww | 欧美 日韩 国产 在线 | 日本在线观看a | 欧美一区二区三区系列电影 | 国产精品va无码一区二区三区 | 亚洲码欧美码一区二区三区 | 少妇99 | 精品播放 | 欧美日韩国产一区在线 | 成人激情视频在线观看 | 亚洲精品99久久久久中文字幕 | 国产做受69 | 日韩欧美在线视频免费观看 | 91一起草 | 99精品一级欧美片免费播放 | 成人免费做受小说 | 国产欧美视频在线观看 | 欧美一级网站 | 日本系列第一页 | 日韩三级在线观看 | 人妻少妇被粗大爽9797pw | 懂色av中文一区二区三区天美 | 小嫩嫩12欧美 | 日日插日日操 | 亚洲av片一区二区三区 | 神马久久午夜 | 总裁憋尿呻吟双腿大开憋尿 | 成人污 | 污视频免费网站 | 日剧再来一次第十集 | 99热播精品 | 男女激情av | 91久久久久久久久久久 | 国产欧美精品一区二区三区 | 在线日韩成人 | 色婷婷激情av | 日韩激情视频网站 | a级片免费视频 |