Silverlight 在Safari 浏览器下的 注意事项
最近工作中,发现和多奇怪的问题,程序在IE下跑的十分正常,到了Safair下,就一塌糊涂,于是探了个究竟。
首先,查找问题的第一个难点是SL 在非IE平台下无法DEBUG。
对于这一点,这是很正常的,微软软件产品中的部件都有一个AutomationID的属性,用于自动化测试,而非IE 浏览器不开放这些,VS也无法捕获到浏览器行为。
所以只能通过Fiddler之类的WEB请求工具来查找一些异同。
首先在IE 下http request 的uriReferer是对应请求的xap包,而在Safari 下urireferer则是xap包所在的宿主页面。这样来说,Safair实际上是“不识别”xap包,xap包所有的请求,Safari 都直接认为是宿主页面直接发起的,那么着就造成了以下几个问题:
1.在Safari 下,无法使用Html Bridge,及xap包于宿主页面的交互完全受阻。具体来说System.Windows.Browser.HtmlPage.Document该类不可用。
例如你在你的SL 页面调用 System.Windows.Browser.HtmlPage.Document.ToString()这样的代码,程序会直接crash.
2.当你发出的POST请求中,请求负载(Request Content)为空的时候,Safair也会自动将请求标头(Header)作为请求负载发送,最重要的造成了服务的无法找到客户端自定义的请求表头。
观点陆续补充中,大家有什么新的发现,请分享。。。
浙公网安备 33010602011771号