在使用mshtml组件进行HTML解析的时候,由于在write的时候HTML中的javascript会被执行,如果被解析的HTML代码还有启动时Alert弹出对话框的时候,就会弹出对话框,如果被解析的代码有JavaScript错误的时候还可能会弹出报错对话框,经过查询资料发现只要设定HTMLDocumentClass为编辑模式,也就是designMode属性等于"on"的时候就不会报错了,因为编辑模式下javascript不会被执行,测试代码如下:
HTMLDocumentClass doc = new HTMLDocumentClass();
doc.designMode = "on";//这一句
doc.IHTMLDocument2_write("<script>alert('aa');a.b=3;</script>");
doc.close();
本来以为mshtml只是一个解析引擎而已,没想到也是会对代码进行执行,和Office 的Automation一样,竟然主动弹出UI了,气愤!
测试时有一个新发现,以前一直不明白Internet选项中“禁用脚本调试(Internet Explorer)”和“禁用脚本调试(其他)”的区别,现在发现,“禁用脚本调试(Internet Explorer)”是用来控制IE的调试行为,和“禁用脚本调试(其他)”则是控制使用mshtml的第三方程序或者使用WebBrowser控件的程序的行为,IE还分自家人和外姓人,呵呵。
如鹏网.Net培训班正在报名,有网络的地方就可以参加如鹏网的学习,学完就能高薪就业,点击此处了解
三年前只要懂“三层架构”就可以说“精通分层架构”;现在则需要懂IOC(AutoFac等)、CodeFirst、lambda、DTO等才值钱;
三年前只要会SQLServer就可以说自己“精通数据库开发”;现在则需还需要掌握MySQL等开源数据库才能说是“.Net开源”时代的程序员;
三年前只要会进行用户上传内容的安全性处理即可;现在则需要熟悉云存储、CDN等才能在云计算时代游刃有余;
三年前只要掌握Lucene.Net就会说自己“熟悉站内搜索引擎开发”;现在大家都用ElasticSearch了,你还用Lucene.Net就太老土了;
三年前发邮件还是用SmtpClient;现在做大型网站发邮件必须用云邮件引擎;
三年前缓存就是Context.Cache;现在则是Redis、Memcached的天下;
如鹏网再次引领.Net社区技术潮流!点击此处了解如鹏网.Net最新课程