[Silverlight]奇技银巧系列-3

来源:互联网 时间:1970-01-01

干web的朋友应该都知道,几年前有一段代码相当流行,其主要目的是:防止网页被框架。想想也是,自己辛苦搞出来的网页被人家随意frame/iframe的确是不爽的。

而silverlight这种玩意,站外引用什么的就更容易了。所谓魔高一尺那啥高一丈,我们可以做点小动作来防止自己的silverlight application被人家引用。

代码说起来就太简单了,在App.xaml.cs的Application_Startup中加入:

            if (!App.Current.Host.Settings.EnableHTMLAccess)                throw new Exception("当前应用程序未允许与DOM通信");

            string htmlUrl = System.Windows.Browser.HtmlPage.Document.DocumentUri.ToString();
            if (!htmlUrl.Equals("http://foo.com/mypage.html"))
                throw new Exception("您无权使用该应用程序");

其中的http://foo.com/mypage.html就是你希望当前silverlight应用程序宿主的页面地址。这样结合防止frame就可以有效防止别人引用你的劳动成果啦。

最后看一下Settings中的属性,

    public sealed class Settings {
        public Settings();
        public bool EnableAutoZoom { get; set; }
        public bool EnableCacheVisualization { get; set; }
        public bool EnableFrameRateCounter { get; set; }
        public bool EnableGPUAcceleration { get; }
        public bool EnableHTMLAccess { get; }
        public bool EnableRedrawRegions { get; set; }
        public int MaxFrameRate { get; set; }
        public bool Windowless { get; }
    }

他们分别对应初始化silverlight(js控制)时的设置。如果我们要使用Host的相关属性、控制DOM、与js通信,那么EnableHTMLAccess 必须为True。

本文来自紫色永恒的博客,原文地址:http://www.cnblogs.com/024hi/archive/2009/12/02/1615190.html


相关阅读:
Top