2014-03-12 49 views
1

我試圖在Worklight中運行在Sencha Touch中編寫的Windows Phone 8應用程序。我以下列方式使用煎茶:IBM Worklight - 如何繞過WP的「無法添加動態內容」警告?

 <script src="//Microsoft.WinJS.1.0/js/base.js"></script><script src="//Microsoft.WinJS.1.0/js/ui.js"></script><script> 
    // Define WL namespace. 
    var WL = WL ? WL : {}; 
    /** 
    * WLClient configuration variables. 
    * Values are injected by the deployer that packs the gadget. 
    */ 
    WL.StaticAppProps = { 
      "APP_DISPLAY_NAME": "Cockpit", 


"APP_ID": "Cockpit", 
    "APP_SERVICES_URL": "http:\/\/192.168.99.11:10080\/CockpitProj\/apps\/services\/", 
    "APP_VERSION": "1.2.1", 
    "ENVIRONMENT": "windows8", 
    "LOGIN_DISPLAY_TYPE": "embedded", 
    "WORKLIGHT_PLATFORM_VERSION": "6.1.0.00.20131219-1900", 
    "WORKLIGHT_ROOT_URL": "http:\/\/192.168.99.11:10080\/CockpitProj\/apps\/services\/api\/Cockpit\/windows8\/" 
};</script> 
     <script src="worklight/cordova.js"></script> 
     <script src="worklight/wljq.js"></script> 
     <script src="worklight/worklight.js"></script> 
    </head> 
    <body> 
     <div class="loadingSpinner bigLoad" id="appLoadingIndicator"></div> 
     <script src="js/initOptions.js" type="text/javascript"></script> 
     <script src="js/sencha-touch-all.js" type="text/javascript"></script> 
     <script src="js/app.js" type="text/javascript"></script> 
     <script src="js/messages.js" type="text/javascript"></script> 
    </body> 
</html> 

如果我運行此代碼,我得到一個異常:

無法添加動態內容。腳本嘗試注入動態內容或先前被動態修改的元素,可能是不安全的 。例如,使用innerHTML屬性添加腳本或 格式錯誤的HTML會生成此異常。使用toStaticHTML方法來過濾動態內容,或使用諸如createElement之類的方法顯式創建元素和 屬性。欲瞭解更多信息, 請參閱http://go.microsoft.com/fwlink/?LinkID=247104

這可以通過煎茶觸摸,所有內的每個煎茶調用來解決成

MSApp.execUnsafeLocalFunction(function() {} 

這隻能是一種變通方法,因爲有太多的這些煎茶調用。

什麼是煎茶使用Windows Phone的一般概念,就像 these steps from Phonegap:

+0

您鏈接到科爾多瓦頁面沒有任何意義。你想說什麼? –

+0

此外,您的代碼片段不會顯示包含Sencha Touch功能的實際代碼;它只是基於Worklight的WP8應用程序生成的HTML頁面的一部分..也沒有幫助。 –

回答

1

IMO有在Windows Phone開發它周圍沒有什麼好辦法。如果它是純科爾多瓦應用程序或基於Worklight的應用程序,則無關緊要。

請參閱下面的討論中的第二個選項。也許你可以把它的方式,它會爲您的應用所需的所有代碼部分的工作:

複製粘貼:

主機執行代碼會拋出 事件中的訪問被拒絕例外,您嘗試將元素的innerHTML(和outerHTML以及一些 其他元素)設置爲不符合已知安全HTML的 白名單的HTML。你可以避開這幾個方面:

  1. 你的字符串通話toStaticHTML()首先應剔除這是不允許的

  2. 使用WinJS.Utilities.setInnerHTMLUnsafe(element, text)一切,這可以讓你的innerHTML設置爲任何你像

  3. 使用msWWA.execUnsafeLocalFunction,例如:

    msWWA.execUnsafeLocalFunc (function(){element.innerHTML = text; })

選項2在3方面實現注意,如果你設置元素的 innerHTML來的HTML你不控制(例如,東西 你下載像網絡上的RSS提要)它可能包含腳本 哪些將能夠訪問WinRT和做壞事,這就是爲什麼 函數的名稱在2)和3)有目的地有點 可怕。

相關問題