簡體   English   中英

使用Javascript在Mobile Safari中獲取所選文本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM