背景:客戶需要,認為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...