से चयनित टेक्स्ट प्राप्त करें मेरे पास UIWebView
है जो htmlString
से टेक्स्ट लोड करता है। मैं की जरूरत है जब उपयोगकर्ता पाठ का एक हिस्सा चयन करता है और प्रेस एक बटन, मैं आदेश इसे कहीं और उपयोग करने के लिए यह निकालने में सक्षम हो जाएगा, तो मैं इस कोड का उपयोग कर रहा हूँ:एक 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];
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);
}
मुझे हमेशा परिणाम के रूप में कुछ भी नहीं मिलता है ... अलर्ट व्यू कुछ भी नहीं दिखाता है ... इस कोड के साथ समस्या क्या है? कोई मदद ? कोई विचार ? यह वास्तव में सराहना की जाएगी।
आपके योगदान के लिए धन्यवाद ... लेकिन मुझे एक साल पहले जवाब मिला !!! यहां एक अंगूठे हैं :) –
वेबव्यू सामग्री में चयनित टेक्स्ट की आरंभ और समाप्ति सीमा कैसे प्राप्त करें –