1. 程式人生 > javascript > (iOS)在UIWebView中執行小書籤?

【javascript】(iOS)在UIWebView中執行小書籤?

我試圖新增可讀性(第三方應用程式)與我的Web瀏覽器的相容性,並且我跟蹤了一個書籤以將頁面儲存為可讀性:

javascript:(%28function%28%29%7Bwindow.baseUrl%3D%27http%3A // www.readability.com%27%3Bwindow.readabilityToken%3D%27bbRmvVb9nTNRWSVEGb9yrcFP4USUHnTjk2EVWXjn%27%3Bvar%27s%3Ddocument。 %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和移動/ iPhone Safari中使用。但是以下兩種方法都無效:

[webview stringByEvaluatingJavaScriptFromString:可讀性];

[webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:可讀性]]]];

(可讀性是具有上述值的字串)

有沒有其他方法可以執行我不知道的javascript小書籤,或者我做錯了什麼?非常感謝您的幫助。

解決辦法

格雷格

您收到此錯誤是因為對javascript url進行了編碼,因此您應該對javascript字串進行解碼,(也許您使用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]];
    }
}