作出选择及;在JavaScript中动态添加标记
我需要一些关于iPhone上JavaScript的帮助作出选择及;在JavaScript中动态添加标记,javascript,iphone,html,uiwebview,selection,Javascript,Iphone,Html,Uiwebview,Selection,我需要一些关于iPhone上JavaScript的帮助UIWebView 我的HTML如下所示: <html> <head> <title>Example</title> </head> <body> <span>this example for selection <b>from</b> UIWebView</span> <
UIWebView
我的HTML如下所示:
<html>
<head>
<title>Example</title>
</head>
<body>
<span>this example for selection <b>from</b> UIWebView</span>
</body>
</html>
这工作正常,并返回所选文本
这也是添加新标记的JS代码:
NSString *AddSpanTag = [NSString stringWithFormat:@"function selHTML() {"
"if (window.ActiveXObject) {"
"var c = document.selection.createRange();"
"return c.htmlText;"
"}"
"var nNd = document.createElement(\"span\");"
"var divIdName = \'myelementid\';"
"var ColorAttr = \"background-color: #ffffcc\";"
"nNd.setAttribute(\'id\',divIdName);"
"nNd.setAttribute(\'style\',ColorAttr);"
"var w = getSelection().getRangeAt(0);"
"w.surroundContents(nNd);"
"return nNd.innerHTML;"
"}selHTML();"];
[webView stringByEvaluatingJavaScriptFromString:AddSpanTag];
我的问题是:如果我从
WebView
中选择“example”(查看HTML文本)文本,它会工作,因为它不包含任何标记。但是如果我从
WebView
中选择“selection from”(查看HTML文本)文本,它将不起作用,因为它启动
的标记,并且
超出了我的选择范围,那么我无法在
和
之间添加新标记
如何解决此问题?由于这是一个
UIWebView
,因此这是Mobile Safari,您可能会丢失许多用于获取选择的分支。我建议将document.execCommand()
与“HiliteColor”命令一起使用,该命令内置于浏览器中,即使跨越元素边界,也能对整个选择工作:
var sel = window.getSelection();
if (!sel.isCollapsed) {
var selRange = sel.getRangeAt(0);
document.designMode = "on";
sel.removeAllRanges();
sel.addRange(selRange);
document.execCommand("HiliteColor", false, "#ffffcc");
sel.removeAllRanges();
document.designMode = "off";
}
对不起,我发现这个问题很难理解。我建议重写它,使它更清晰。
var sel = window.getSelection();
if (!sel.isCollapsed) {
var selRange = sel.getRangeAt(0);
document.designMode = "on";
sel.removeAllRanges();
sel.addRange(selRange);
document.execCommand("HiliteColor", false, "#ffffcc");
sel.removeAllRanges();
document.designMode = "off";
}