Tôi có một số UIWebView
tải văn bản từ htmlString
. tôi cần khi người sử dụng chọn một phần của văn bản và nhấn một nút, tôi sẽ có khả năng giải nén nó để sử dụng nó ở nơi khác, do đó, tôi đang sử dụng mã này:nhận văn bản đã chọn từ một uiwebview Xcode
// The JS File
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"HighlightedString" ofType:@"js" inDirectory:@""];
NSData *fileData = [NSData dataWithContentsOfFile:filePath];
NSString *jsString = [[NSMutableString alloc] initWithData:fileData encoding:NSUTF8StringEncoding];
[WebV2 stringByEvaluatingJavaScriptFromString:jsString];
// The JS Function
NSString *startSearch = [NSString stringWithFormat:@"getHighlightedString()"];
[WebV2 stringByEvaluatingJavaScriptFromString:startSearch];
NSString *selectedText = [NSString stringWithFormat:@"selectedText"];
NSString * highlightedString = [WebV2 stringByEvaluatingJavaScriptFromString:selectedText];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Highlighted String"
message:highlightedString
delegate:nil
cancelButtonTitle:@"Oh Yeah"
otherButtonTitles:nil];
[alert show];
Cùng với HighlightedString.js
:
/*!
------------------------------------------------------------------------
// Search Highlighted String
------------------------------------------------------------------------
*/
var selectedText = "";
function getHighlightedString() {
var text = window.getSelection();
selectedText = text.anchorNode.textContent.substr(text.anchorOffset, text.focusOffset - text.anchorOffset);
}
// ...
function stylizeHighlightedString() {
var range = window.getSelection().getRangeAt(0);
var selectionContents = range.extractContents();
var span = document.createElement("span");
span.appendChild(selectionContents);
span.setAttribute("class","uiWebviewHighlight");
span.style.backgroundColor = "black";
span.style.color = "white";
range.insertNode(span);
}
// helper function, recursively removes the highlights in elements and their childs
function uiWebview_RemoveAllHighlightsForElement(element) {
if (element) {
if (element.nodeType == 1) {
if (element.getAttribute("class") == "uiWebviewHighlight") {
var text = element.removeChild(element.firstChild);
element.parentNode.insertBefore(text,element);
element.parentNode.removeChild(element);
return true;
} else {
var normalize = false;
for (var i=element.childNodes.length-1; i>=0; i--) {
if (uiWebview_RemoveAllHighlightsForElement(element.childNodes[i])) {
normalize = true;
}
}
if (normalize) {
element.normalize();
}
}
}
}
return false;
}
// the main entry point to remove the highlights
function uiWebview_RemoveAllHighlights() {
selectedText = "";
uiWebview_RemoveAllHighlightsForElement(document.body);
}
Tôi luôn không nhận được kết quả gì ... Chế độ xem cảnh báo không hiển thị ... Vấn đề với mã này là gì? Bất kỳ giúp đỡ? Bất kỳ ý tưởng? Nó sẽ được thực sự đánh giá cao.
cảm ơn sự đóng góp của bạn ... nhưng tôi đã nhận được câu trả lời một năm trước !!! đây là một dấu hiệu thích hợp :) –
cách nhận phạm vi bắt đầu và kết thúc của văn bản đã chọn trong nội dung webview –