首页 > 解决方案 > 如何从 Safari 的应用程序扩展中获取选定的文本?

问题描述

如何在 safari 应用程序扩展中从 safari 中获取选定的文本?这是我的代码,但从网页没有收到任何内容。有人有使用 Safari 应用程序扩展保存所选文本的示例代码吗?

我的 safari 是 12 版,xcode 是 10.3 版

import SafariServices

class SafariExtensionHandler: SFSafariExtensionHandler {
    override func contextMenuItemSelected(withCommand command: String, in page: SFSafariPage, userInfo: [String : Any]? = nil) {
        var str2 : String = "The extension received a message (\(command)) from a script injected into (\(String(describing: properties?.url))) with userInfo (\(userInfo ?? [:]))"
        NSLog(str2)

        do{
            let documentpath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.downloadsDirectory, FileManager.SearchPathDomainMask.userDomainMask, true)
            var p1 : String = documentpath[0] + "/gg1.txt"
            try str2.write(toFile: p1, atomically: true, encoding: String.Encoding.utf8)
        }
        catch let error {
            print(error)
        } 
}
...........

script.js 是:

'use strict';

document.addEventListener('contextmenu', (event) => {
    var selectedText = window.getSelection().toString();
    safari.extension.setContextMenuEventUserInfo(event,{ "selectedText": selectedText });
}

标签: swiftsafari

解决方案


推荐阅读