IE下有onselectstart这个方法,通过设置这个方法可以禁止元素文本被选取。而firefox下没有这个方法,但可以通过css或一种变通的办法解决:
if (typeof(element.onselectstart) != "undefined") {
// IE下禁止元素被选取
element.onselectstart = new Function("return false");
} else {
// firefox下禁止元素被选取的变通办法
element.onmousedown = new Function("return false");
element.onmouseup = new Function("return true");
}
或使用CSS:
div {
-moz-user-select: none;
}
这里说的跨浏览器主要指的是IE及Firefox
首先推荐使用或阅读Prototype.js,其中解决了很多IE及firefox下的兼容问题。
然后就是“Javascript的IE和Firefox兼容性汇编”这篇文章。
这里主要记录是一些本人碰到,而上面又没有涉及的问题
if (typeof(domFrame.onreadystatechange) != "undefined") {
// ie
domFrame.onreadystatechange = notify;
} else {
// firefox
domFrame.onload = notify;
}
function notify() {
alert('iframe内容装载完成');
}
像上面那个例子,假如在B页面中写onload事件回调方法,在方法中取clientHeight,clientWidth返回值将不正确。
解决方法可以在A页面中来取值或设置
// A页面
// 将返回B页面的clentWidth, clientHeight
domFrame.contentWindow.document.body.clientWidth;
domFrame.contentWindow.document.body.clientHeight;
function getCurrentStyle(obj, prop) {
if (obj.currentStyle) {
return obj.currentStyle[prop];
} else if (window.getComputedStyle) {
prop = prop.replace(/([A-Z])/g, "-$1");
prop = prop.toLowerCase();
return window.getComputedStyle(obj, "").getPropertyValue();
}
return null;
}