Discuz! 6.1~7.0 - 解决jQuery兼容问题
在Discuz! 6.1中无法直接使用jQuery,升级到Discuz! 7.0后也无法直接使用jQuery,估计之前的一些版本也不能直接使用jQuery。这是由于Discuz!为了解决兼容性问题,而引入了另一个兼容性问题。在Discuz! 6.1中,对/include/javascript/common.js文件应用如下补丁即可。
--- common.6.1.original.js
+++ common.6.1.jquery.js
@@ -8,28 +8,28 @@
*/
var lang = new Array();
var userAgent = navigator.userAgent.toLowerCase();
var is_opera = userAgent.indexOf('opera') != -1 && opera.version();
var is_moz = (navigator.product == 'Gecko') && userAgent.substr(userAgent.indexOf('firefox') + 8, 3);
var is_ie = (userAgent.indexOf('msie') != -1 && !is_opera) && userAgent.substr(userAgent.indexOf('msie') + 5, 3);
function $(id) {
return document.getElementById(id);
}
-
+if(typeof Array.prototype.push === 'undefined') {
Array.prototype.push = function(value) {
this[this.length] = value;
return this.length;
}
-
+}
function checkall(form, prefix, checkall) {
var checkall = checkall ? checkall : 'chkall';
for(var i = 0; i < form.elements.length; i++) {
var e = form.elements[i];
if(e.name && e.name != checkall && (!prefix || (prefix && e.name.match(prefix)))) {
e.checked = form.elements[checkall].checked;
}
}
}
function doane(event) {
在Discuz! 7.0中,对/include/js/common.js文件应用如下补丁即可。
--- common.7.0.original.js
+++ common.7.0.jquery.js
@@ -45,28 +45,28 @@
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;
});
HTMLElement.prototype.click = function(){
var evt = this.ownerDocument.createEvent('MouseEvents');
evt.initMouseEvent('click', true, true, this.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
this.dispatchEvent(evt);
}
}
-
+if(typeof Array.prototype.push === 'undefined') {
Array.prototype.push = function(value) {
this[this.length] = value;
return this.length;
}
-
+}
function $(id) {
return document.getElementById(id);
}
function checkall(form, prefix, checkall) {
var checkall = checkall ? checkall : 'chkall';
count = 0;
for(var i = 0; i < form.elements.length; i++) {
var e = form.elements[i];
if(e.name && e.name != checkall && (!prefix || (prefix && e.name.match(prefix)))) {
e.checked = form.elements[checkall].checked;
[Discuz! - 官方网站]
http://www.discuz.net/[Discuz! - 常见问题]
Discuz! 6.1 从GBK编码转为UTF-8编码Discuz! 6.1 多语言翻译工作范围
Discuz! 6.1 发送HTML格式电子邮件
Discuz! 6.1~7.0 安装SupeSite后导致安全漏洞
Discuz! 6.1 不修改模板在贴子上增加收藏按钮
Discuz! 6.1 cpmsg函数在IE下和Firefox下表现不一致
Discuz! 6.1~7.0 升级后request缓存文件名不兼容
Discuz! 6.1~7.0升级后request路径不兼容以及相应修改方案
Discuz! 7.0 模块脚本文件名
Discuz! 7.0 模块调用脚本范例程序 - 模板Discuz! 7.0 模块调用脚本范例程序 - 数组
Discuz! 7.0 模块调用脚本范例程序 - 主题Discuz! 7.0 模块调用脚本范例程序 - 多选下拉的缺陷以及使用方法
Discuz! 6.1 - 自动禁止非公开版面向Home推送事件
Discuz! 6.1~7.0 - 解决jQuery兼容问题