MCPcopy Index your code
hub / github.com/TruthHun/BookStack / handle

Function handle

static/wangEditor/js/wangEditor.js:2456–2507  ·  view source on GitHub ↗
(elem)

Source from the content-addressed store, hash-verified

2454
2455 // 处理粘贴的内容
2456 function handle(elem) {
2457 if (!elem || !elem.nodeType || !elem.nodeName) {
2458 return;
2459 }
2460 var $elem;
2461 var nodeName = elem.nodeName.toLowerCase();
2462 var nodeType = elem.nodeType;
2463 var childNodesClone;
2464
2465 // 只处理文本和普通node标签
2466 if (nodeType !== 3 && nodeType !== 1) {
2467 return;
2468 }
2469
2470 $elem = $(elem);
2471
2472 // 如果是容器,则继续深度遍历
2473 if (nodeName === 'div') {
2474 childNodesClone = [];
2475 $.each(elem.childNodes, function (index, item) {
2476 // elem.childNodes 可获取TEXT节点,而 $elem.children() 就获取不到
2477 // 先将 elem.childNodes 拷贝一份,一面在循环递归过程中 elem 发生变化
2478 childNodesClone.push(item);
2479 });
2480 // 遍历子元素,执行操作
2481 $.each(childNodesClone, function () {
2482 handle(this);
2483 });
2484 return;
2485 }
2486
2487 if (legalTagArr.indexOf(nodeName) >= 0) {
2488 // 如果是合法标签之内的,则根据元素类型,获取值
2489 resultHtml += getResult(elem);
2490 } else if (nodeType === 3) {
2491 // 如果是文本,则直接插入 p 标签
2492 resultHtml += '<p>' + elem.textContent + '</p>';
2493 } else if (nodeName === 'br') {
2494 // <br>保留
2495 resultHtml += '<br/>';
2496 }
2497 else {
2498 // 忽略的标签
2499 if (['meta', 'style', 'script', 'object', 'form', 'iframe', 'hr'].indexOf(nodeName) >= 0) {
2500 return;
2501 }
2502 // 其他标签,移除属性,插入 p 标签
2503 $elem = $(removeAttrs(elem));
2504 // 注意,这里的 clone() 是必须的,否则会出错
2505 resultHtml += $('<div>').append($elem.clone()).html();
2506 }
2507 }
2508
2509 // 获取元素的结果
2510 function getResult(elem) {

Callers 7

wangEditor.jsFile · 0.85
optionFunction · 0.85
codemirror.min.jsFile · 0.85
optionFunction · 0.85
codemirror.jsFile · 0.85
optionFunction · 0.85
codemirror.jsFile · 0.85

Calls 3

getResultFunction · 0.85
removeAttrsFunction · 0.85
$Function · 0.50

Tested by

no test coverage detected