Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖

[已经确认] Uchome IE8 下的一个BUG 严重!!!

[复制链接]
先请而后教 发表于 2011-3-24 17:10:57 | 显示全部楼层
本帖最后由 先请而后教 于 2011-3-24 17:14 编辑

可以参考下这个,我试了下ie8下上传时可以预览,但是插入到文章时仅插入了div,貌似作者漏写了一部分,希望有人找到问题所在,修改代码。另外请人解释下修改function_blog.php部分的代码说明
笑脸的地方应该是 ====: D(没有空格)
1.打开source\script_upload.js文件,找到

function insertAttach(id) {
var localimgpreview = '';
var path = $('attach_' + id).value;
var ext = getExt(path);
var re = new RegExp("(^|\\s|,)" + ext + "($|\\s|,)", "ig");
var localfile = $('attach_' + id).value.substr($('attach_' + id).value.replace(/\\/g, '/').lastIndexOf('/') + 1);

if(path == '') {
return;
}
if(extensions != '' && (re.exec(extensions) == null || ext == '')) {
alert('对不起,不支持上传此类扩展名的文件');
return;
}
attachexts[id] = inArray(ext, ['gif', 'jpg', 'jpeg', 'png']) ? 2 : 1;

var inhtml = '<div><table cellspacing="0" cellpadding="0" border="0"><tr>';
if(is_ie || userAgent.indexOf('firefox') >= 1) {
var picPath = getPath($('attach_' + id));
var imgCache = new Image();
imgCache.src = picPath;
inhtml += '<td><img src="' + picPath +'" width="60" height="80"> </td>';
}
if(is_ie && typeof no_insert=='undefined' || insertType==0) {
localfile += ' <a href="javascript:;" title="点击这里插入内容中当前光标的位置">[插入]</a>';
}
localfile += ' <span id="showmsg' + id + '"><a href="javascript:;">[删除]</a></span>';
inhtml += '<td>' + localfile +'<br/>';
inhtml += '图片描述:<br/><textarea name="pic_title" cols="40" rows="2"></textarea>';
inhtml += '</td></tr></table></div>';

$('localfile_' + id).innerHTML = inhtml;
$('attach_' + id).style.display = 'none';

addAttach();
}

更改为

function insertAttach(id) {
var localimgpreview = '';
var path = $('attach_' + id).value;
var ext = getExt(path);
var re = new RegExp("(^|\\s|,)" + ext + "($|\\s|,)", "ig");
var localfile = $('attach_' + id).value.substr($('attach_' + id).value.replace(/\\/g, '/').lastIndexOf('/') + 1);

if(path == '') {
return;
}
if(extensions != '' && (re.exec(extensions) == null || ext == '')) {
alert('对不起,不支持上传此类扩展名的文件');
return;
}
attachexts[id] = inArray(ext, ['gif', 'jpg', 'jpeg', 'png']) ? 2 : 1;

var inhtml = '<div><table cellspacing="0" cellpadding="0" border="0"><tr>';
if(is_ie || userAgent.indexOf('firefox') >= 1) {
var picPath = getPath($('attach_' + id));
var imgCache = new Image();
imgCache.src = picPath;
if (is_ie) {
inhtml += '<td><div id="showpic_'+id+'" style="width:60px; height:80px;margin-right:10px;filter:progidXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);"></div></td>';
}
else
{
inhtml += '<td><img src="' + picPath +'" width="60" height="80"> </td>';
}
}
localfile += ' <a href="javascript:;" title="点击这里插入内容中当前光标的位置">[插入]</a>';
localfile += ' <span id="showmsg' + id + '"><a href="javascript:;">[删除]</a></span>';
inhtml += '<td>' + localfile +'<br/>';
inhtml += '图片描述:<br/><textarea name="pic_title" cols="40" rows="2"></textarea>';
inhtml += '</td></tr></table></div>';

$('localfile_' + id).innerHTML = inhtml;
if (is_ie) {
$('showpic_'+ id).filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = picPath;
}
$('attach_' + id).style.display = 'none';
addAttach();
}

还是在这个文件找到

function insertAttachimgTag(id) {
if(insertType == 0) {
insertImage(id);
} else if(is_ie) {
var picPath = getPath($('attach_' + id));
var imgCache = new Image();
imgCache.src = picPath;
edit_insert('<img id="_uchome_localimg_' + id + '" src="' + picPath + '">');
} else {
alert('对不起,请在IE浏览器下面使用本功能');
}
}

更改为

function insertAttachimgTag(id) {
if(insertType == 0) {
insertImage(id);
} else if(is_ie) {
var picPath = getPath2($('attach_' + id));
var imgCache = new Image();
imgCache.src = picPath;
var txt = '<div id="insertopic_'+id+'" style="width:60px; height:80px;margin-right:10px;filter:progidXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=image);"></div>';
edit_insert(txt,id,picPath);
} else {
alert('在非IE浏览器下面使用本功能可能会出现错误');
var picPath = getPath($('attach_' + id));
var imgCache = new Image();
imgCache.src = picPath;
var txt = '<div id="insertopic_'+id+'"><img src="' + picPath +'"></div>';
edit_insert(txt,id,picPath);
}
}

还是在这个文件找到

function delAttach(id) {
$('attachbody').removeChild($('attach_' + id).parentNode.parentNode.parentNode);
if($('attachbody').innerHTML == '') {
addAttach();
}
$('localimgpreview_' + id + '_menu') ? document.body.removeChild($('localimgpreview_' + id + '_menu')) : null;
}

更改为

function delAttach(id) {
$('attachbody').removeChild($('attach_' + id).parentNode.parentNode.parentNode);
if($('attachbody').innerHTML == '') {
addAttach();
}
$('localimgpreview_' + id + '_menu') ? document.body.removeChild($('localimgpreview_' + id + '_menu')) : null;
edit_delpic(id);
}

还是在这个文件找到

function getPath(obj){
if (obj) {
if (is_ie) {
obj.select();
// IE下取得图片的本地路径
return document.selection.createRange().text;

} else if(is_moz) {
if (obj.files) {
// Firefox下取得的是图片的数据
return obj.files.item(0).getAsDataURL();
}
return obj.value;
}
return obj.value;
}
}

更改为

function getPath(obj){
if (obj) {
if (is_ie) {
obj.select();
// IE下取得图片的本地路径
return document.selection.createRange().text;

} else if(is_moz) {
if (obj.files) {
// Firefox下取得的是图片的数据
return obj.files.item(0).getAsDataURL();
}
return obj.value;
}
return obj.value;
}
}
function getPath2(obj){
if (obj) {
return obj.value;
}
}

2.打开image\editor\editor_function.js文件,找到

//向编辑器插入代码
function edit_insert(html) {
var p = window.frames['uchome-ifrHtmlEditor'];
var obj = p.window.frames['HtmlEditor'];
var status = p.document.getElementById('uchome-editstatus').value;
if(status != 'html') {
alert('本操作只在多媒体编辑模式下才有效');
return;
}
obj.focus();
if(window.Event){
obj.document.execCommand('insertHTML', false, html);
} else {
obj.focus();
var f = obj.document.selection.createRange();
f.pasteHTML(html);
f.collapse(false);
f.select();
}
}

更改为

//向编辑器插入代码
function edit_insert(html,id,path) {
var p = window.frames['uchome-ifrHtmlEditor'];
var obj = p.window.frames['HtmlEditor'];
var status = p.document.getElementById('uchome-editstatus').value;
if(status != 'html') {
alert('本操作只在多媒体编辑模式下才有效');
return;
}
obj.focus();
if(window.Event){
obj.document.execCommand('insertHTML', false, html);
} else {
obj.focus();
var f = obj.document.selection.createRange();
f.pasteHTML(html);
f.collapse(false);
f.select();
}
if(id!='undefined'&&path!='undefined')
{
var obj2 = obj.document.getElementById("insertopic_"+id);
obj2.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = path;
}

}

function edit_delpic(id) {
var p = window.frames['uchome-ifrHtmlEditor'];
var obj = p.window.frames['HtmlEditor'];
var status = p.document.getElementById('uchome-editstatus').value;
if(status != 'html') {
alert('本操作只在多媒体编辑模式下才有效');
return;
}
var obj2 = obj.document.getElementById("insertopic_"+id);
if(obj2)
{
obj2.parentNode.removeChild(obj2);
}
}

3.打开source\function_blog.php文件,找到

//插入文章
if($uploads) {
preg_match_all("/\<img\s.*?\_uchome\_localimg\_([0-9]+).+?src\=\"(.+?)\"/i", $message, $mathes);
if(!empty($mathes[1])) {
$searchs = $idsearchs = array();
$replaces = array();
foreach ($mathes[1] as $key => $value) {
if(!empty($mathes[2][$key]) && !empty($uploads[$value])) {
$searchs[] = $mathes[2][$key];
$idsearchs[] = "_uchome_localimg_$value";
$replaces[] = pic_get($uploads[$value]['filepath'], $uploads[$value]['thumb'], $uploads[$value]['remote'], 0);
unset($uploads[$value]);
}
}
if($searchs) {
$message = str_replace($searchs, $replaces, $message);
$message = str_replace($idsearchs, 'uchomelocalimg[]', $message);
}
}
//未插入文章
foreach ($uploads as $value) {
$picurl = pic_get($value['filepath'], $value['thumb'], $value['remote'], 0);
$message .= "<div class=\"uchome-message-pic\"><img src=\"$picurl\"><p>$value[title]</p></div>";
}
}

更改为

//插入文章
if($uploads) {
foreach ($uploads as $key => $value) {
$picurl = pic_get($value['filepath'], $value['thumb'], $value['remote'], 0);
$message= str_replace('<DIV ','<div ',$message);
$message= str_replace('<div id=insertopic_'.$key,'<div id="insertopic_'.$key.'"',$message);
$message= str_replace('<div id=\"insertopic_'.$key.'\"','<div id="insertopic_'.$key.'"',$message);
$message= str_replace('</DIV>','</div>',$message);
if(strpos($message,'<div id="insertopic_'.$key))
{
$message = preg_replace("/<(div id=\"insertopic_".$key.".*?)<(\/div.*?)>/si","<div class=\"uchome-message-pic\"><img src=\"$picurl\"><p>$value[title]</p></div>",$message);
}
else
{
$message .= "<div class=\"uchome-message-pic\"><img src=\"$picurl\"><p>$value[title]</p></div>";
}
}
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-23 16:43 , Processed in 0.049528 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表