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

标签 javascript iphone ios uiwebview bookmarklet

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

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: readability];

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

(可读性是一个具有上述值的字符串)

是否有另一种方法可以运行我不知道的 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]];
    }
}

关于javascript - (iOS) 在 UIWebView 中运行小书签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9966373/

相关文章:

ios - 如何使用 Json 数组到 UITableview

ios - UIButton 图像不缩放

javascript - IE7/8 javascript "SCRIPT5007: Unable to get value of the property"

ios - Xcode-编译Swift段错误11

ios - 如何将索引为 0 的项目插入到 Realm 容器中

iphone - 关闭呈现的 View Controller

iphone - 使用 CocosDenshion 在指定位置启动声音?

javascript - ng重复:dupes even with track by $index (special case)

javascript - 从 Html 表单 Meteor javascript 获取 Var 时出错

javascript - 解析云查询数组包含值