zoukankan      html  css  js  c++  java
  • [Silverlight]奇技银巧系列3

    Silverlight奇技银巧系列:

    所有该系列中的文章只为介绍一些Silverlight中或隐藏在Silverlight .NET framework鲜为人知的知识和技巧。这些文章并非教程,也是不是什么技术指导,您只需对文章介绍的内容保有印象。这些知识和技巧也许会在不经意间绽放银色光芒。

    干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://024hi.cnblogs.com/

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利

  • 相关阅读:
    学渣的c#复习手记 类 二 字段与属性
    学渣的c#复习手记 类 一
    一个没有验证的学生文件存储代码(试验报告性质)
    初学C语言之指针:值类型和数组
    增删改查
    python socket的send不能发送字符串解决办法
    正则
    字符串运算符r
    类的私有属性
    运算符重载__add__
  • 原文地址:https://www.cnblogs.com/024hi/p/1615190.html
Copyright © 2011-2022 走看看