繁体   English   中英

(iOS)在UIWebView中运行小书签吗?

[英](iOS) Run bookmarklets in UIWebView?

我试图添加与我的Web浏览器的可读性(第三方应用程序)兼容性,并且我跟踪了一个书签以将页面保存为可读性:

的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 /书签/ 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]];
    }
}

您可能需要使用他们的API 出于安全原因,您可能试图阻止您执行的操作,并且需要在请求中放入自己的API密钥。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM