2011-12-10 23 views
3

該協議規定:iOS上的JavaScript是否必須通過WebKit框架下載*除了在其框架內執行?

3.3.2內部使用應用程序不得下載或安裝可執行代碼。如果所有腳本,代碼和解釋程序都打包在應用程序中並且沒有下載,則只能在應用程序中使用解釋的代碼。前述的唯一例外是腳本和代碼由Apple內置的WebKit框架下載和運行。

它特別說「..代碼下載..通過Webkit框架」。

是否有人知道如果使用UIWebView的本地應用程序,這意味着JavaScript必須由Webkit自動下載,即由於用戶點擊外部URL鏈接的結果。或者,如果通過創建我自己的HTTP連接到服務器並自己下載腳本來下載腳本是可以接受的 - 但是它們會在Webkit中通過UIWebView執行?

我認爲這個限制是出於安全目的,安全來自於將執行限制在WebKit中,而不是腳本從哪裏下載?

我意識到除了Apple之外,任何人都不可能明確地回答這個問題,但推測答案是非常受歡迎的。

感謝

+0

Web應用程序與Applications不同。 –

+0

如果你會注意到你會看到我提到的UIWebView - 因此我想問一個關於使用javascript的本地應用程序。儘管我已經編輯了原始文本,現在明確提到了原生應用程序。 – Gruntcakes

+0

當然,這不是一個權威的答案,但是有幾個文檔查看器,編輯器和Web瀏覽器被Apple和App Store批准,可以從網頁瀏覽點擊之外的書籤等開始HTML5頁面下載。 – hotpaw2

回答

4

,蘋果正基於Webkit的的沙盒自然/ UIWebView中進行的異常 - 實際上,它提供了精確的,因爲它是這麼好沙盒的「允許」腳本化的環境。如果你提供了一個UIWebView,如果用戶導航到一個站點,然後在瀏覽器中執行一些Javascript,它不會產生真正的區別,而你通過NSURLConnection或其他方式編程獲得一些Javascript,然後將其加載到UIWebView中重新加載HTML文件或使用「stringByEvaluatingJavaScriptFromString」。

+0

我注意到它說「...腳本和代碼...」。所以我希望/假設Objective-C可以在Javascript以外下載和執行。如果它在Webkit中完成,我沒有看到任何理由。有人知道有什麼不同嗎? – Gruntcakes

+0

Webkit無法執行Objective-C。我甚至不認爲Objective-C運行時可以這樣做 - 也就是說,Objective-C沒有與Perl的「eval」等效,它使您能夠在運行時執行任意代碼。如果您考慮一下,如果您可以在運行時將Objective C傳遞到您的應用程序,那麼這將完全繞過應用程序商店的審批流程。同樣,在HTML和JavaScript的情況下,這是允許的,因爲這些在WebKit中以經過驗證的方式進行了沙盒處理。 –

相關問題