![](/img/trans.png)
[英]How to clear text selection in Mobile Safari with JavaScript?
[英]Use Javascript to get selected text in Mobile Safari
所以我正在制作一個書簽,我最好使用“循環”抓取用戶選擇的內容。 window.getSelection和document.getSelection都是我可以調用的函數,但是,它們總是返回一個空字符串。
我認為問題在於,當您點按Mobile Safari中的書簽圖標時,會發布選擇。 例如,如果您選擇某些文本,請點按“+”,書簽或其他標簽,即使取消,也會取消選擇該選項。
是否有可能獲得這些數據? 或者這幾乎不可能?
我認為你必須讓bookmarklet將一些內容插入到將對選擇進行操作的頁面中。 您可以在頁面的頂部或底部添加一個按鈕,單擊它時,它將作用於當前選擇。 然后它可以清理添加的內容或將其留在那里。
“循環”的內容在移動瀏覽器期間不會暴露給javascript。 所以這是不可能的(我假設您在完整的瀏覽器中工作,而不是在啟動“保存到主頁”圖標時創建的瀏覽器窗口中)
我有一個相當簡單的想法。
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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.