1

刚刚向我的应用程序添加了共享扩展。它在 safari 中运行良好。从 Chrome 启动它时,不会调用“ExtensionPreprocessingJS.js”。因此,未调用以下代码:

MyExtensionJavaScriptClass.prototype = {
run: function(arguments) {
    // Pass the baseURI of the webpage to the extension.
    arguments.completionFunction({"baseURI": document.baseURI});
},

请指教。

4

3 回答 3

1

该行为被记录为 Safari 选项,而不是适用于每个 Web 浏览器的东西。

在共享扩展(在两个平台上)和操作扩展(仅限 iOS)中,您可以通过让 Safari运行 JavaScript 文件并将结果返回到扩展来授予用户访问 Web 内容的权限。

[强调我的]

于 2015-05-08T17:49:35.027 回答
1

尝试将/替换/添加到您的 info.plist 扩展

<dict> <key>NSExtensionAttributes</key> <dict> <key>NSExtensionActivationRule</key> <dict> <key>NSExtensionActivationSupportsText</key> <true/> <key>NSExtensionActivationSupportsWebPageWithMaxCount</key> <integer>1</integer> <key>NSExtensionActivationSupportsWebURLWithMaxCount</key> <integer>1</integer> </dict> <key>NSExtensionJavaScriptPreprocessingFile</key> <string>DemoPreprocessor</string> </dict> <key>NSExtensionMainStoryboard</key> <string>MainInterface</string> <key>NSExtensionPointIdentifier</key> <string>com.apple.share-services</string> </dict>

于 2016-01-18T11:22:19.713 回答
-3

No need for that complicated stuff. This works both in Google Chrome and Safari:

override func viewDidLoad() {
    super.viewDidLoad()

    for item in extensionContext!.inputItems {
        if let attachments = item.attachments {
            for itemProvider in attachments! {
                itemProvider.loadItemForTypeIdentifier("public.url", options: nil, completionHandler: { (object, error) -> Void in
                    if object != nil {
                        println(object) //This is your URL
                    }
                })
            }
        }
    }
}
于 2015-09-16T11:58:25.177 回答