【问题标题】:(iOS) Run bookmarklets in UIWebView?(iOS) 在 UIWebView 中运行小书签?
【发布时间】:2012-04-15 12:28:30
【问题描述】:

我正在尝试添加与我的网络浏览器的可读性(第三方应用程序)兼容性,并且我找到了一个书签以将页面保存到可读性:

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 和移动/iPhone Safari。但是以下两种方法都无济于事:

[webview stringByEvaluatingJavaScriptFromString: 可读性];

[webview loadRequest: [NSURLRequest requestWithURL: [NSURL URLWithString: readability]]];

(可读性是上面值的字符串)

是否有另一种方法可以运行我不知道的 javascript 小书签,或者我做错了什么?非常感谢您的帮助。

【问题讨论】:

  • 你的问题没有任何意义。 “我正在尝试添加与我的 Web 浏览器的可读性兼容性”是什么意思? webview stringByEvaluatingJavaScriptFromString: 来自哪里?
  • Readability 是一款流行的第三方应用,可以保存网页以供离线阅读。 [webview stringByEvaluatingJavaScriptFromString:] 是一个影响 UIWebView 对象的目标 C 函数。

标签: javascript iphone ios uiwebview bookmarklet


【解决方案1】:

格雷格

你得到这个错误是因为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]];
    }
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 查看他们的 API 页面,我完全不知道如何实现它。你能指出我正确的方向吗(就我应该研究如何做的事情而言)?
    猜你喜欢
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    相关资源
    最近更新 更多