首页 > 解决方案 > 是否可以从项目文件夹中为 Safari App Extension 导入内容脚本?

问题描述

我正在开发一个 Safari 应用程序扩展。但是我的内容脚本不在 Xcode 项目文件夹中。是否可以导入这些脚本文件?

我在Apple的官方文档中看到:

对于每个脚本文件,将字典添加到数组中。每个字典都必须有一个 Script 键,其值指定要包含的脚本文件的路径(相对于包的 Resources 目录)。

假设我的扩展项目名为 SafariExt。我的应用程序的文件夹结构:

SafariExt   // Xcode project root folder
 |
 +-- SafariExt Extension
    |
    +--script.js    // this is the default script file in Xcode project, and I specified path relative to this folder


Scripts     // my scripts folder
 |
 +-- myScript.js    // the file I want to import

SafariExt并且Scripts在同一个基本文件夹中。

现在我../../Scripts/myScript.js在 Info.plist 中使用来引用myScript.js文件,但是在 Safari 中这个文件没有被加载。

Info.plist 如下所示:

<key>SFSafariContentScript</key>
<array>
    <dict>
        <key>Script</key>
        <string>../../Scripts/myScript.js</string>
    </dict>
</array>

标签: safari-app-extension

解决方案


您应该能够使用safari.addContentScriptFromURL. 您可以尝试将其与 结合使用,file://以查看它是否允许您从项目目录外部提取。

但实际上,如果可能,您应该使用构建脚本将文件复制到扩展目录中,而不是使用相对目录链接。

https://developer.apple.com/documentation/safariextensions/safariextension/1635361-addcontentscriptfromurl


推荐阅读