Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_14980201
ueditor
提交
f0cf14cf
U
ueditor
项目概览
qq_14980201
/
ueditor
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
ueditor
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
f0cf14cf
编写于
12月 26, 2012
作者:
C
campaign
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
by zhanyi
上级
1319d940
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
66 addition
and
118 deletion
+66
-118
_src/core/dom/Range.js
_src/core/dom/Range.js
+59
-0
_src/core/dom/domUtils.js
_src/core/dom/domUtils.js
+0
-46
_src/plugins/paste.js
_src/plugins/paste.js
+7
-72
未找到文件。
_src/core/dom/Range.js
浏览文件 @
f0cf14cf
...
...
@@ -1078,6 +1078,65 @@
return
true
;
}
return
false
;
},
createAddress
:
function
(
ingoreEnd
,
ingoreTxt
){
var
addr
=
{},
me
=
this
;
this
.
trimBoundary
();
function
getAddress
(
isStart
){
var
node
;
if
(
isStart
){
node
=
me
.
startContainer
.
childNodes
[
me
.
startOffset
]
||
me
.
startContainer
;
}
else
{
node
=
me
.
endContainer
.
childNodes
[
me
.
endOffset
]
||
me
.
endContainer
;
}
var
parents
=
domUtils
.
findParents
(
node
,
false
,
function
(
node
){
return
!
domUtils
.
isBody
(
node
)}),
addrs
=
[];
for
(
var
i
=
0
,
ci
;
ci
=
parents
[
i
++
];){
addrs
.
push
(
domUtils
.
getNodeIndex
(
ci
,
ingoreTxt
));
}
addrs
.
push
(
domUtils
.
getNodeIndex
(
node
,
ingoreTxt
));
//有可能是空的位置 <b>xxxx|</b>
if
(
node
==
(
isStart
?
me
.
startContainer
:
me
.
endContainer
)){
addrs
.
push
(
isStart
?
me
.
startOffset
:
me
.
endOffset
)
}
return
addrs
;
}
addr
.
startAddress
=
getAddress
(
true
);
if
(
!
ingoreEnd
){
addr
.
endAddress
=
getAddress
();
}
return
addr
;
},
moveToAddress
:
function
(
addr
){
var
me
=
this
;
function
getNode
(
address
,
isStart
){
var
tmpNode
=
me
.
startContainer
.
ownerDocument
.
body
,
parentNode
,
offset
;
for
(
var
i
=
0
,
ci
,
l
=
address
.
length
;
i
<
l
;
i
++
){
ci
=
address
[
i
];
parentNode
=
tmpNode
;
tmpNode
=
tmpNode
.
childNodes
[
ci
];
if
(
!
tmpNode
){
offset
=
ci
;
}
}
if
(
isStart
){
if
(
tmpNode
){
me
.
setStartBefore
(
tmpNode
)
}
else
{
me
.
setStart
(
parentNode
,
offset
)
}
}
else
{
if
(
tmpNode
){
me
.
setEndBefore
(
tmpNode
)
}
else
{
me
.
setEnd
(
parentNode
,
offset
)
}
}
}
getNode
(
addr
.
startAddress
,
true
);
addr
.
endAddress
&&
getNode
(
addr
.
endAddress
);
return
me
;
}
};
})();
\ No newline at end of file
_src/core/dom/domUtils.js
浏览文件 @
f0cf14cf
...
...
@@ -1236,52 +1236,6 @@ var domUtils = dom.domUtils = {
start
=
start
.
parentNode
;
}
return
1
;
},
getAddr
:
function
(
node
,
ignoreTxt
){
var
parents
=
domUtils
.
findParents
(
node
,
false
,
function
(
node
){
return
!
domUtils
.
isBody
(
node
)}),
addrs
=
[],
firstIndex
;
for
(
var
i
=
0
,
ci
;
ci
=
parents
[
i
++
];){
addrs
.
push
(
domUtils
.
getNodeIndex
(
ci
,
true
));
}
firstIndex
=
domUtils
.
getNodeIndex
(
node
,
ignoreTxt
);
if
(
node
.
nodeType
==
3
){
var
tmpNode
=
node
;
while
(
tmpNode
=
tmpNode
.
previousSibling
){
if
(
tmpNode
.
nodeType
==
3
){
firstIndex
+=
tmpNode
.
nodeValue
.
replace
(
fillCharReg
,
''
).
length
;
}
else
{
break
;
}
}
}
addrs
.
push
(
firstIndex
);
return
addrs
;
},
setAddr
:
function
(
node
,
addr
){
var
tmpNode
=
node
.
ownerDocument
.
body
,
parentNode
;
for
(
var
i
=
0
,
ci
,
l
=
addr
.
length
;
i
<
l
;
i
++
){
ci
=
addr
[
i
];
parentNode
=
tmpNode
;
tmpNode
=
tmpNode
.
childNodes
[
ci
];
if
(
!
tmpNode
)
break
;
}
if
(
tmpNode
){
parentNode
.
insertBefore
(
node
,
tmpNode
)
}
else
{
if
(
parentNode
){
if
(
parentNode
.
nodeType
==
3
){
parentNode
.
parentNode
.
insertBefore
(
node
,
parentNode
)
}
else
{
parentNode
.
appendChild
(
node
)
}
}
}
}
};
var
fillCharReg
=
new
RegExp
(
domUtils
.
fillChar
,
'
g
'
);
\ No newline at end of file
_src/plugins/paste.js
浏览文件 @
f0cf14cf
...
...
@@ -80,7 +80,8 @@
},
notNeedUndo
:
1
};
var
txtContent
,
bkRange
,
htmlContent
;
var
txtContent
,
htmlContent
,
address
;
function
filter
(
div
){
var
html
;
...
...
@@ -231,11 +232,8 @@
me
.
fireEvent
(
'
beforepaste
'
,
html
);
//不用在走过滤了
if
(
html
.
html
){
me
.
fireEvent
(
'
clearPasteBookmark
'
);
txtContent
=
'
<span style="display:none;line-height:0px;" id="_ue_paste_id_start">
\
ufeff</span>
'
+
txtContent
+
'
<span style="display:none;line-height:0px;" id="_ue_paste_id_end">
\
ufeff</span>
'
;
htmlContent
=
'
<span style="display:none;line-height:0px;" id="_ue_paste_id_start">
\
ufeff</span>
'
+
html
.
html
+
'
<span style="display:none;line-height:0px;" id="_ue_paste_id_end">
\
ufeff</span>
'
;
htmlContent
=
html
.
html
;
address
=
me
.
selection
.
getRange
().
createAddress
(
true
);
me
.
execCommand
(
'
insertHtml
'
,
htmlContent
,
true
);
me
.
fireEvent
(
"
afterpaste
"
);
}
...
...
@@ -243,75 +241,12 @@
}
}
me
.
addListener
(
'
clearPasteBookmark
'
,
function
(){
function
removeNode
(
id
){
var
node
;
while
(
node
=
me
.
document
.
getElementById
(
id
)){
var
parentNode
=
node
.
parentNode
;
domUtils
.
remove
(
node
);
while
(
parentNode
&&
!
domUtils
.
isBody
(
parentNode
)){
var
currentNode
=
parentNode
;
parentNode
=
currentNode
.
parentNode
;
if
(
domUtils
.
isEmptyNode
(
currentNode
)){
domUtils
.
remove
(
currentNode
)
}
}
}
}
removeNode
(
'
_ue_paste_id_start
'
);
removeNode
(
'
_ue_paste_id_end
'
)
});
me
.
addListener
(
'
mousedown keydown
'
,
function
(
cmd
,
e
){
if
(
cmd
==
'
mousedown
'
||
!
e
.
ctrlKey
&&
!
e
.
metaKey
){
me
.
fireEvent
(
'
clearPasteBookmark
'
)
}
});
var
startAddr
,
endAddr
;
me
.
addListener
(
'
beforegetscene
'
,
function
(){
var
start
=
me
.
document
.
getElementById
(
'
_ue_paste_id_start
'
);
if
(
start
){
startAddr
=
domUtils
.
getAddr
(
start
);
}
var
end
=
me
.
document
.
getElementById
(
'
_ue_paste_id_end
'
);
if
(
end
){
endAddr
=
domUtils
.
getAddr
(
end
);
}
if
(
start
&&
end
){
domUtils
.
remove
(
start
);
domUtils
.
remove
(
end
)
}
});
me
.
addListener
(
'
aftergetscene
'
,
function
(){
var
span
=
domUtils
.
createElement
(
me
.
document
,
'
span
'
,{
'
style
'
:
"
display:none;line-height:0px;
"
,
'
id
'
:
"
_ue_paste_id_start
"
,
'
innerHTML
'
:
domUtils
.
fillChar
});
if
(
startAddr
){
domUtils
.
setAddr
(
span
,
startAddr
);
startAddr
=
null
;
}
if
(
endAddr
){
span
=
span
.
cloneNode
(
true
);
span
.
id
=
'
_ue_paste_id_end
'
;
domUtils
.
setAddr
(
span
,
endAddr
);
endAddr
=
null
;
}
});
me
.
addListener
(
'
pasteTransfer
'
,
function
(
cmd
,
plainType
){
var
range
=
me
.
selection
.
getRange
();
var
start
=
me
.
document
.
getElementById
(
'
_ue_paste_id_start
'
);
var
end
=
me
.
document
.
getElementById
(
'
_ue_paste_id_end
'
);
if
(
start
&&
end
&&
txtContent
&&
htmlContent
&&
txtContent
!=
htmlContent
){
range
.
setStartAfter
(
start
).
setEndAfter
(
end
).
deleteContents
();
range
.
setStartBefore
(
start
).
collapse
(
true
);
domUtils
.
remove
(
start
);
range
.
select
(
true
);
if
(
address
&&
txtContent
&&
htmlContent
&&
txtContent
!=
htmlContent
){
var
range
=
me
.
selection
.
getRange
();
range
.
moveToAddress
(
address
).
deleteContents
().
select
();
me
.
__hasEnterExecCommand
=
true
;
me
.
execCommand
(
'
inserthtml
'
,
plainType
?
txtContent
:
htmlContent
,
true
);
me
.
__hasEnterExecCommand
=
false
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录