2014-09-23 72 views
0

我有一個應用程序正在加載到WebView(x-ms-webview)的URL。當用戶提出請求時,我想將它們嘗試加載的URL與ApplicationContentUriRules中的「白名單」URL進行比較,並在它們不存在時發出警告。任何想法,我可能會做到這一點?檢查URL存在ApplicationContentUriRules

回答

1

沒有直接從清單中提取信息的API,但有多個選項。

首先,您可以在代碼中維護一個相同URI的數組,因爲要更改它們,您必須更改清單並更新包,以便更新數組以匹配。這將使檢查變得容易,但增加代碼維護。

這樣的數組也可以讓你創建一個用戶界面,用戶只能輸入可以工作的URI。您可以從下拉列表中提供可能性,而不是讓用戶輸入任何內容。其次,您可以直接將清單XML讀取到文檔中,並通過解析來獲取規則。下面是一些代碼,將做到這一點:

var uri = new Windows.Foundation.Uri("ms-appx:///appxmanifest.xml"); 
var doc; 

Windows.Storage.StorageFile.getFileFromApplicationUriAsync(uri).then(function (file) { 
    return Windows.Storage.FileIO.readTextAsync(file);      
}).done(function (text) { 
    doc = new Windows.Data.Xml.Dom.XmlDocument(); 
    doc.loadXml(text); 

    var acur = doc.getElementsByTagName("ApplicationContentUriRules"); 
    if (acur !== null) { 
     var rules = acur[0].getElementsByTagName("Rule"); 

     for (var i = 0; i < rules.length; i++) { 
      console.log(rules[i].getAttribute("Match") + " - " + rules[i].getAttribute("Type")); 
     } 
    } 
}); 

你很可能只是得到「規則」直接從根文檔標籤,因爲我不認爲任何東西在清單中其他人使用那種節點,但未來最好先獲得ApplicationContentUriRules。正如你所看到的,「Match」屬性是該規則的URI,但你還需要確保「Type」是「include」而不是「exclude」。

+0

是的,這是我得出的結論。感謝您的確認。 – Joe 2014-09-24 13:07:07