2012-04-01 1 views
2

Я пытаюсь добавить Читаемость (приложение третья сторона) совместимости с моим веб-браузером, и я разыскал букмарклет, чтобы сохранить страницу в читаемости:(iOS) Запуск букмарклетов в UIWebView?

JavaScript: (% 28function% 28% 29% 7Bwindow .baseUrl% 3D% 27http% 3A // www.readability.com% 27% 3Bwindow.readabilityToken% 3D% 27bbRmvVb9nTNRWSVEGb9yrcFP4USUHnTjk2EVWXjn% 27% 3Bvar% 20s% 3Ddocument.createElement% 28% 27script% 27% 29% 3Bs.setAttribute% 28% 27type% 27% 2C% 27text/JavaScript% 27% 29% 3Bs.setAttribute% 28% 27charset% 27% 2C% 27UTF-8% 27% 29% 3Bs.setAttribute% 28% 27src% 27% 2CbaseUrl% 2B% 27/bookmarklet/read.js% 27% 29% 3Bdocument.documentElement.appendChild% 28s% 29% 3B% 7D% 29% 28% 29)

Однако я не могу заставить его работать. Он работает в Safari и Safari для мобильных устройств/iPhone. Но оба метода ниже ничего не делают:

[webview stringByEvaluatingJavaScriptFromString: удобочитаемость];

[webview loadRequest: [Запрос NSURLRequestWithURL: [NSURL URLWithString: удобочитаемость]]];

(читаемость строка с указанным значением)

Есть ли другой метод для запуска JavaScript букмарклетов, что я не в курсе, или я делаю что-то не так? Помощь очень ценится.

+0

Ваш вопрос не имеет никакого смысла. Что означает «я пытаюсь добавить совместимость с читабельностью с моим веб-браузером»? Где происходит 'webview stringByEvaluatingJavaScriptFromString:'? –

+0

Readability - популярное стороннее приложение, которое сохраняет веб-страницы для автономного чтения. [webview stringByEvaluatingJavaScriptFromString:] - объектная функция C, которая влияет на объект UIWebView. – Greg

ответ

1

Грег

Вы получили это ошибка, потому что Javascript URL закодирован, вы должны декодировать яваскрипта строку, (может быть вы используете NSURL передать строку, так что это было закодировано NSURL)

затем используйте webview stringByEvaluatingJavaScriptFromString, это решение хорошо работает

-(void)loadUrl:(NSURL*)url 
{ 
    if ([[url scheme] isEqualToString:@"javascript"]) 

    { 
     NSRange range = [[url absoluteString] rangeOfString:@"javascript:"]; 
     NSString *javaScriptString = [[[url absoluteString] substringFromIndex:range.location + range.length] URLDecodedString]; 
     [self stringByEvaluatingJavaScriptFromString:javaScriptString]; 
    } 
    else 
    { 
     [self loadRequest:[NSURLRequest requestWithURL:url]]; 
    } 
} 
0

Возможно, вам необходимо использовать их API. То, что вы пытаетесь сделать, вероятно, предотвращено по соображениям безопасности, и вам нужно поместить свой собственный ключ API в запрос.

+0

Глядя на их страницу API, я полностью потерял, как ее реализовать. Не могли бы вы указать мне в правильном направлении (с точки зрения того, что я должен исследовать, как это сделать)? – Greg

 Смежные вопросы

  • Нет связанных вопросов^_^