所以我正在开发一个书签,我最好使用“循环”来抓取用户选择的内容。 window.getSelection和document.getSelection都是我可以调用的函数,但是,它们总是返回一个空字符串。
我认为问题是当您点按Mobile Safari中的书签图标时,会发布选择。例如,如果您选择某些文字,请点按“+”,书签或其他标签,即使您取消,也会取消选择。
是否有可能获得此数据的任何想法?或者这几乎不可能?
答案 0 :(得分:1)
我认为你必须让bookmarklet将一些内容插入到将对选择进行操作的页面中。您可以在页面的顶部或底部添加一个按钮,单击它时,它将作用于当前选择。然后它可以清理添加的内容或将其留在那里。
答案 1 :(得分:1)
“循环”的内容在移动浏览器期间不会暴露给javascript。所以这是不可能的(我假设您在完整的浏览器中工作,而不是在启动“保存到主页”图标时创建的浏览器窗口中)
答案 2 :(得分:-1)
我有一个相当简单的想法。
var latestSelection = "";
while (true)
{
var tmp;
if ((tmp = document.getSelection()) != "")
latestSelection = tmp;
}
这样,您始终可以在latestSelection变量中进行最新选择。当然,像这样循环运行会很昂贵。因此,您可能希望与听众或至少计时器一起玩。
希望这有帮助。
<强>更新强> 请勿按原样使用上述代码。
以下是在objective-c中编写相同内容的方法:
- (void) updateSelection
{
NSString * tmp = [webView stringByEvaluatingJavaScriptFromString:@"document.getSelection()"];
if (![tmp isEqualToString:@""])
latestSelection = tmp;
}
您可以让计时器每x个时间单位执行updateSelection。如果您发现一些好的通知让您知道用户已经与webview进行了互动,那么您可以使用它来更新latestSelection。