jQuery版本公升級問題彙總

2022-09-16 15:33:15 字數 2180 閱讀 6095

背景:客戶需要,認為3.0之前的版本存在xss(跨站指令碼攻擊)風險,jquery版本需要從當前的1.8.2更新到3.3.1。

查詢了官方文件,

3.0以後的版本主要棄用的api有:.bind()、.unbind()、.delegate()、.undelegate()、jquery.fx.interval

1.9和1.10版本棄用的api有jquery.support()、.context()

詳細問題:

1、attr和prop

attr:獲取匹配的元素集合中的第乙個元素的屬性的值  或 設定每乙個匹配元素的乙個或多個屬性。

prop:獲取匹配的元素集中第乙個元素的屬性(property)值或設定每乙個匹配元素的乙個或多個屬性。

attr是1.0之後使用的,prop是1.6以後使用的,用法不同,需注意。

在jquery 1.6中,當屬性沒有被設定時候,.attr()方法將返回undefined。 若要檢索和更改dom屬性,比如元素的checked, selected, 或 disabled狀態,使用.prop()方法。

版本公升級最大改動就在這裡,之前的**大量使用attr,沒辦法。。。

2、報錯:uncaught typeerror: url.indexof is not a function

這個錯誤是由於呼叫了load函式導致的錯誤

把**裡呼叫load函式的方式

//old

$(window).load(function() );

//new

$(window).on('load', function() );

注意:.load(), .unload(), and .error()從jquery 1.8開始就被廢棄了,換成使用.on()函式來註冊。其實這裡應該之前1.8的時候就報錯,可能都沒有注意到,這次正好一次性改完。

3.$.browser用法

jquery 1.9不再支援$.browser 和 $.browser.version,取而代之的是 $.support。在更新的 2.0 版本中,將不再支援 ie 6/7/8。

當前客戶要求的版本3.0+,肯定是不支援ie6/7/8了,先前我們用的是1.8版本,因此現在所有的$.browser用法都報錯,頁面混亂。

如果要全面支援 ie,並混合使用 jquery 1.9 和 2.0, 官方的解決方案是加入以下指令碼:

從長久來看,這樣有利於在複雜情況下根據瀏覽器特性進行分別處理, 而不是簡單的檢測瀏覽器型別和版本。 但目前很多舊程式的移植恐怕無法直接過渡為根據瀏覽器支援特性, 所以在網上找了一些能夠直接替換的解決辦法。

jquery1.9之前判斷瀏覽器型別:

$.browser.mozilla = /firefox/.test(n**igator.useragent.tolowercase()); //firefox

$.browser.webkit = /webkit/.test(n**igator.useragent.tolowercase()); //webkit核心

$.browser.opera = /opera/.test(n**igator.useragent.tolowercase()); //opera

$.browser.msie = /msie/.test(n**igator.useragent.tolowercase()); //ie

等號後面的表示式返回的就是 true/false,可以直接用來替換原來的 $.browser.msie 等。如需要檢查是否為 ie6時,可以這麼寫:

// old

if ($.browser.msie && 7 > $.browser.version)

// new

if ('undefined' == typeof(document.body.style.maxheight))

檢查是否為 ie 6-8:

if (!$.support.leadingwhitespace) {}

4.$("#id").val(index);  之前1.8.2,當index不存在時會預設選取第乙個,公升級3.3.1之後,如果不存在不會有預設選項,顯示也是空白。

5.$.post(...). error(function()錯誤**方法報錯:uncaught typeerror: $.post(...).error is not a function

原因:$.post()使用連綴.error()方法提示錯誤,連綴方法被.fail()取代

DEV控制項版本公升級問題彙總

dev新版本安裝後出現問題,以及自己摸索的解決方法 問題1.a devexpress.utils.imagecollectionstreamer 無法強制轉換為 b devexpress.utils.imagecollectionstreamer。型別 a 源自 devexpress.utils.v...

Spring boot 版本公升級問題彙總總結

1 公升級前版本 公升級後版本 因版本公升級,會有很多方法和引用會失效,找到編譯報錯的地方逐步適配即可,主要涉及的有application中的 另外還有 還有還有 還有其他報錯的話,需要乙個個的修改寫法 2 新增了session依賴後的報錯 nospringsessionstoreisconfigu...

版本公升級 Harbor版本公升級

本文只適用於harbor的版本大於v1.10.x到最新版本的公升級遷移,docker compose啟動的harbor。主要參考了官網的公升級指南,根據實際情況我稍微調整了下步驟。詳情請參考 此次測試是從版本v2.0.1公升級到v2.1.2 cd root wget2.解壓檔案到當前目錄 tar x...