0

私は最近、Mac App Store サンドボックスの実装を開始しましたが (うーん)、保存された HTML アーカイブを WebView にロードすると、参照先のリソースがレンダリングされないことに気付きました。たとえば、保存された Web ページ MyPage.html は、対応する MyPage_files フォルダー内の styles.css、image.jpg、および script.js を参照できます (Google Chrome の保存 "Webpage, Complete" 規則):

  • MyPage.html
  • MyPage_files/styles.css
  • MyPage_files/image.jpg
  • MyPage_files/script.js

ただし、MyPage.html ファイルを WebView にロードした後、Console.app は次のようなエラーを報告します。

sandboxd: deny file-read-data /Users/user/Desktop/MyPage_files/styles.css
sandboxd: deny file-read-data /Users/user/Desktop/MyPage_files/image.jpg
sandboxd: deny file-read-data /Users/user/Desktop/MyPage_files/script.js

これはバグと見なすべきですか、それともサンドボックス内の WebView の単なる制限ですか?

4

1 に答える 1

1

これはオリジナルのサンドボックス設計の制限ですが、Apple が (少なくとも部分的に) 修正したものです。

Apple のエンジニアは少なくとも 2 つの場所で新しいソリューションについて議論しましたが、残念ながら、どちらも「プレリリース」の情報源であり、Apple 以外の誰もがこのような公の場で話すことは許可されていないと思います.

有料の Mac Developer Program メンバーシップをお持ちの場合は、Application Sandboxing フォーラムにアクセスしてください。

WWDC 2012 ビデオの「OS X App Sandbox」ビデオは、有料の Mac Developer Program メンバーシップなしで利用できると思います。

また、すべてのユーザーに新しいバージョンの OS X へのアップグレードを要求する場合を除き、何らかのフォールバックが必要になることを覚えておいてください。Apple にバグを報告して、必要なことを説明し、投稿する必要があります。フォーラムでそれについて。機密情報を含まない Lion でこれを行う方法を尋ねているため、非プレリリース フォーラムに投稿できます。

最後のポイント: 自分でアーカイブを作成している場合は、アーカイブを保存して、.html ファイルと _files サブディレクトリを含む MyPage バンドルがその中にあるようにすることができます。その後、ユーザーがバンドルを選択すると、すべてにアクセスできるようになります。しかしもちろん、Safari で作成されたアーカイブなどを開こうとしている場合、これは機能しません。

于 2012-07-03T20:13:54.770 に答える