搜尋
首頁web前端js教程Firefox和IE相容性問題及解決方法總結_javascript技巧

在開發多語言java 網站的過程中,發現不少FF中可以正常運作的程式碼,可是在IE中不行,反之亦然。 IE與Firefox(火狐)在JavaScript方面的不相容及統一方法總結如下:

1.相容firefox的outerHTML,FF中沒有outerHtml的方法

複製程式碼 程式碼如下:

if (window.HTMLElement) {
HTMLElement.prototype.__defineSML( ,function(sHTML) {
var r=this.ownerDocument.createRange();
r.setStartBefore(this);
var df=r.createContextualFragment(sHTML);
this.parentNode. replaceChild(df,this);
return sHTML;
});

HTMLElement.prototype.__defineGetter__("outerHTML",function() {
var attr;
var rs =this.attributes;
var str="for (var i=0;i";
return str ">" this.innerHTML "";
});

HTMLElement.prototype.__defineGetter__("canHaveChildren",function() {
switch(this.tagName.toLowerCase()) {
case "area":
case "base":
case "basefont":
case "col":
case " frame":
case "hr":
case "img":
case "br":
case "input":
case "isindex":
case "link" :
case "meta":
case "param":
return false;
}
return true;
});
}

2.集合類別物件問題

說明:IE下,可以使用()或[]取得集合類別物件;Firefox下,只能使用[]取得集合類別對象.解決方法:統一使用[]取得集合類別物件.

3.自訂屬性問題

說明:IE下,可以使用取得常規屬性的方法來取得自訂屬性,也可以使用getAttribute()取得自訂屬性;Firefox下,只能使用getAttribute()取得自訂屬性.解決方法:統一透過getAttribute()取得自訂屬性.

4.eval("idName")問題

說明:IE下,,可以使用eval("idName")或getElementById("idName")來取得id為idName的HTML物件; Firefox下只能使用getElementById("idName")來取得id為idName的HTML物件.解決方法:統一用getElementById("idName")來取得id為idName的HTML物件.

5 .變數名與某HTML物件ID相同的問題

說明:IE下,HTML物件的ID可以作為document的下屬物件變數名稱直接使用;Firefox下則不能.Firefox下,可以使用與HTML物件ID相同的變數名稱;IE下則不能。 解決方法:使用document.getElementById("idName")代替document.idName.最好不要取HTML物件ID相同的變數名稱,以減少錯誤;在宣告變數時,一律加上var,以避免歧義.

6.const問題

說明:Firefox下,可以使用const關鍵字或var關鍵字來定義常數;IE下,只能使用var關鍵字來定義常數.解決方法:統一使用var關鍵字來定義常數.

7.input.type屬性問題

說明:IE下input.type屬性為唯讀;但是Firefox下input.type屬性為讀寫.

8.window.event問題

說明:window.event只能在IE下運作,不能在Firefox下運行,這是因為Firefox的event只能在事件發生的現場使用.解決方法:

IE:

...

IE&Firefox:

...


9.event.x與event.y問題

說明:IE下,even物件有x,y屬性,但是沒有pageX,pageY屬性;Firefox下,even物件有pageX,pageY屬性,但是沒有x,y屬性.解決方法:使用mX(mX = event.x ? event.x : event.pageX;)來取代IE下的event.x或Firefox下的event.pageX.

10.event.srcElement問題

說明:IE下,even物件有srcElement屬性,但是沒有target屬性;Firefox下,even物件有target屬性,但是沒有srcElement屬性.解法:使用obj(obj = event.srcElement ? event.srcElement : event.target;)來取代IE下的event.srcElement或Firefox下的event.target.

11.window. location.href問題

說明:IE或Firefox2.0.x下,可以使用window.location或window.location.href;Firefox1.5.x下,只能使用window.location.解:使用window.location來取代window.location.href.

12.模態與非模態視窗問題

說明:IE下,可以透過showModalDialog和showModelessDialog開啟模態和非模態視窗;Firefox下則不能.解決方法:直接使用window.open(pageURL,name,parameters)方式開啟新視窗。

如果需要將子視窗中的參數傳回父視窗,可以在子視窗中使用window.opener來存取父視窗. 例如:var parWin = window.opener; parWin.document.getElementById("Aqing ").value = "Aqing";

13.frame問題

以下面的frame為例:



(1)存取frame物件:IE:使用window.frameId或window.frameName來存取這個frame物件.Firefox:只能使用window .frameName來存取這個frame物件.另外,在IE和Firefox中都可以使用window.document.getElementById("frameId")來存取這個frame物件.

(2)切換frame內容:在IE和Firefox中都可以使用window.document.getElementById("testFrame").src = "xxx.html"或window.frameName.location = "xxx.html"來切換frame的內容.

如果需要將frame中的參數傳回父窗口,可以在frme中使用parent來存取父窗口。例如:parent.document.form1.filename.value="Aqing";

14.找出問題

以下面的getElementByClass為例:

document.getElementByClass("classname1"); 這個功能在IE下不工作,可以用

getElementsByClassName替代,但是這個函數返回的是匹配上NodeList,而不是一個單一對象,如:
複製程式碼 程式碼如下:

var list, index;
list = document.get"ByClass classname1");
for (index = 0; index list[index].setAttribute(/* ... */);
}

諸如此類的問題,最好使用類庫如jQuery, Prototype, Google Closure, etc., 這些類庫兼容所有瀏覽器的. 這將節省很多時間來處理這些兼容性問題。

For instance, in jQuery:

$(".home1").attr(/* ... */);

15.body問題

Firefox的body在body標籤沒有被瀏覽器完全讀入之前就存在;而IE的body則必須在body標籤被瀏覽器完全讀入之後才存在.

例如:

Firefox:
複製代碼 代碼如下:



陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
解决 Windows 11/10 中 KernelBase.dll 错误的方法解决 Windows 11/10 中 KernelBase.dll 错误的方法Apr 21, 2023 am 09:43 AM

许多Windows客户最近报告说,当他们尝试启动程序或游戏时,它会抛出一个错误,指出KernelBase.dll文件丢失或找不到。当正在运行的程序意外崩溃时也会报告此错误。目前,用户不确定要采取什么步骤来解决此问题。他们甚至尝试多次重启Windows系统,效果相同。导致此问题的原因可能有很多,可能是因为系统数据文件损坏、Windows系统过时等。在分析了以上所有要点之后,我们提出了一组修复程序,可以帮助用户修复此问题并顺利使用系统。如果您也遇到同样的问题,请继续阅读本文以了解更多信息。解决方

如何修复 Windows 11 / 10 上的 ntdll.dll 崩溃问题如何修复 Windows 11 / 10 上的 ntdll.dll 崩溃问题May 12, 2023 am 11:40 AM

在您的计算机上首次安装Windows操作系统时,会自动创建ntdll.dll文件。基本上,ntdll.dll是与Windows操作系统相关联的文件,位于WindowsSystem32目录中。如果您看到这个文件的属性,它的文件描述为NT层DLL,它包含Windows操作系统正常工作所需的所有主要NT内核函数。该文件大部分时间在后台运行,但有时它可能会崩溃或无法正确执行操作。通常,当多个应用程序/程序尝试同时访问该文件时,就会发生这种情况。许多Windows用户报告说,当他们访问的

Ubuntu Linux中如何删除Firefox Snap?Ubuntu Linux中如何删除Firefox Snap?Feb 21, 2024 pm 07:00 PM

要在UbuntuLinux中删除FirefoxSnap,可以按照以下步骤进行操作:打开终端并以管理员身份登录到Ubuntu系统。运行以下命令以卸载FirefoxSnap:sudosnapremovefirefox系统将提示你输入管理员密码。输入密码并按下Enter键以确认。等待命令执行完成。一旦完成,FirefoxSnap将被完全删除。请注意,这将删除通过Snap包管理器安装的Firefox版本。如果你通过其他方式(如APT包管理器)安装了另一个版本的Firefox,则不会受到影响。通过以上步骤

如何在 Windows 11 上将笔记本电脑投影到电视上如何在 Windows 11 上将笔记本电脑投影到电视上Apr 14, 2023 am 11:25 AM

无线投影您的显示器可能是一个福音,尤其是当您尝试与更多人共享内容时。大多数现代电视都支持某种无线投影,笔记本电脑也是如此。但是你如何开始呢?让我们来了解一下!Windows 11 是否原生支持投影屏幕?是也不是,Windows 11 原生使用 Miracast 进行无线显示投影,同时通过 Chromium 浏览器支持 Chromecast。另一方面,电视与 Miracast 或 Chromecast 捆绑在一起。这使得找到合适的兼容性并让一切在您的设备上正常工作变得困难重重。值得庆幸的是,大多数

Internet Explorer 打开 Edge:如何停止 MS Edge 重定向Internet Explorer 打开 Edge:如何停止 MS Edge 重定向Apr 14, 2023 pm 06:13 PM

长期以来,InternetExplorer的失宠一直不是秘密,但随着Windows11的到来,现实开始了。Edge将来不再有时取代IE,它现在是微软最新操作系统中的默认浏览器。目前,您仍然可以在Windows11中启用InternetExplorer。但是,IE11(最新版本)已经有了一个正式的退役日期,即2022年6月15日,时间在流逝。考虑到这一点,您可能已经注意到InternetExplorer有时会打开Edge,而您可能不喜欢它。那么为什么会这样呢?在

win11无法使用ie11浏览器怎么办?(win11用不了ie浏览器)win11无法使用ie11浏览器怎么办?(win11用不了ie浏览器)Feb 10, 2024 am 10:30 AM

越来越多的用户开始升级win11系统,由于每个用户的使用习惯不同,还是有不少用户在使用ie11浏览器,那么win11系统用不了ie浏览器,该怎么办呢?windows11还支持ie11吗?下面就来看看解决办法。win11无法使用ie11浏览器的解决方法1、首先右键开始菜单,选择“命令提示符(管理员)”打开。2、打开之后,直接输入“Netshwinsockreset”,回车确定。3、确定之后再输入“netshadvfirewallreset&rdqu

mozilla firefox可以卸载吗mozilla firefox可以卸载吗Mar 15, 2023 pm 04:40 PM

mozilla firefox可以卸载;firefox属于第三方浏览器,如果不需要,完全可以卸载。卸载方法:1、在开始菜单中,依次点击“Windwos系统”-“控制面板”;2、在“控制面板”界面中,点击“程序和功能”;3、在新界面中,找到并双击火狐浏览器图标;4、在卸载弹窗中,点击“下一步”;5、点击“卸载”即可。

Win10打开IE自动跳转到Edge怎么取消_IE浏览器页面自动跳转的解决办法Win10打开IE自动跳转到Edge怎么取消_IE浏览器页面自动跳转的解决办法Mar 20, 2024 pm 09:21 PM

近期不少的win10用户们在使用电脑浏览器的时候发现自己的ie浏览器总是自动的跳转到edge浏览器,那么win10打开ie自动跳转edge怎么关闭?。下面就让本站来为用户们来仔细的介绍一下win10打开ie自动跳转edge关闭方法吧。1、我们登录edge浏览器,点击右上角...,找下拉的设置选项。2、我们进入设置后,在左侧栏点击默认浏览器。3、最后我们在兼容性中,勾选不允许IE模式下重新加载网站,重启ie浏览器即可。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。