2014-09-23 80 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