gpt4 book ai didi

javascript - Internet Explorer 'InsertHTML' 兼容性问题

转载 作者:行者123 更新时间:2023-11-28 08:33:44 24 4
gpt4 key购买 nike

我目前在使用 Internet Explorer 和我创建的 Javascript 时遇到问题。我一直试图找出不兼容问题的根源,但一直无法查明。

这在 Firefox 26 中运行良好,但在 Internet Explorer 11 中似乎并未实际生成表格。

function InsertTable()
{
column = document.getElementById("Columns").value
row = document.getElementById("Rows").value

cellwidth = 100 / column

table = '<table width="100%" border="2px">'

while(row > 0)
{
columncopy = column
table = table + '<tr>'

while(columncopy > 0)
{
table = table + '<td width="' + cellwidth + '%"></td>'
columncopy = columncopy - 1;
}

table = table + '</tr>'
row = row - 1;
}

table = table + '</table>'

document.getElementById("mainedit").focus();
document.execCommand('insertHTML', false, table);


}

更新:我设法将问题范围缩小到一行代码,它正在遍历整个过程,但实际上并没有正确放置它。

document.execCommand('insertHTML', false, table);

是问题的根源。

最佳答案

我找到了以下代码并按照以下方式集成了它。

html = table

IE()


function IE()
{

var sel, range;
if (window.getSelection) {
// IE9 and non-IE
sel = window.getSelection();
if (sel.getRangeAt && sel.rangeCount) {
range = sel.getRangeAt(0);
range.deleteContents();

// Range.createContextualFragment() would be useful here but is
// only relatively recently standardized and is not supported in
// some browsers (IE9, for one)
var el = document.createElement("mainedit");
el.innerHTML = html;
var frag = document.createDocumentFragment(), node, lastNode;
while ( (node = el.firstChild) ) {
lastNode = frag.appendChild(node);
}
range.insertNode(frag);

// Preserve the selection
if (lastNode) {
range = range.cloneRange();
range.setStartAfter(lastNode);
range.collapse(true);
sel.removeAllRanges();
sel.addRange(range);
}
}
} else if (document.selection && document.selection.type != "Control") {
// IE < 9
document.selection.createRange().pasteHTML(html);
}


}

关于javascript - Internet Explorer 'InsertHTML' 兼容性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21508332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com