惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
The Blog of Author Tim Ferriss
S
Securelist
D
Docker
The Register - Security
The Register - Security
GbyAI
GbyAI
Recorded Future
Recorded Future
Engineering at Meta
Engineering at Meta
Stack Overflow Blog
Stack Overflow Blog
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
罗磊的独立博客
博客园 - 【当耐特】
F
Full Disclosure
WordPress大学
WordPress大学
腾讯CDC
小众软件
小众软件
大猫的无限游戏
大猫的无限游戏
D
DataBreaches.Net
SecWiki News
SecWiki News
L
Lohrmann on Cybersecurity
I
InfoQ
MyScale Blog
MyScale Blog
量子位
Cyberwarzone
Cyberwarzone
博客园 - 三生石上(FineUI控件)
The Hacker News
The Hacker News
F
Fortinet All Blogs
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Jina AI
Jina AI
博客园_首页
H
Help Net Security
K
Kaspersky official blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Webroot Blog
Webroot Blog
Blog — PlanetScale
Blog — PlanetScale
V
Vulnerabilities – Threatpost
Y
Y Combinator Blog
The Cloudflare Blog
P
Proofpoint News Feed
V
Visual Studio Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tailwind CSS Blog
爱范儿
爱范儿
P
Privacy International News Feed
Security Archives - TechRepublic
Security Archives - TechRepublic
The GitHub Blog
The GitHub Blog
C
Cybersecurity and Infrastructure Security Agency CISA
B
Blog RSS Feed

博客园 - silverlightfans

sql server 获取数据库中每个表的磁盘占用情况 扩招的后果(搞笑版) 数据仓库构建实施方法及步骤(转载) treeview非xml数据源绑定 VS 2008 JavaScript Intellisense for Silverlight google 的百毒视频,巨搞笑啊,不知道是不是真的 国际支付平台又添新成员Amazon FPS asp.net 客户端回调功能的实现机制探讨(响应部分及可能的优化) asp.net 客户端回调功能的实现机制探讨(请求部分) 黎巴嫩的一位mvp写的一篇文章 关于为什么web service 构造函数只能是无参数构造函数问题的解答 Silverlight:动态从服务器端获取XAML来绘制前台 javascript附加事件,ff 和 ie 网易的高级提示功能 asp.net ajax 包装得似乎有些过分 PageMethods未定义 的解决 微软为google修改Vista 最好不要使用百分比宽高来创建silverlight Silverlight:一个IE浏览器
利用Tiny Framework 从托管代码中直接操作页面的 DOM元素
silverlightfans · 2007-06-19 · via 博客园 - silverlightfans

怎样从托管代码访问HTML DOM

这篇文章将演示如何从silverlight程序以编程的形式在托管代码中访问html DOM,控件以及虚拟元素。直接的访问DOM可以让你具备了在客户端直接操纵页面元素的能力,而无需饶个大弯,与服务器进行交互。(这个大概就是开心大哥所说的客户端的内置Tiny Framework

演示步骤:

1 处理XAMLCarvas加载事件

2 html Dom 与事件挂钩。

3 访问Dom的一个属性。

4 Dom中调用一个方法。

1 silverlight程序中处理XAML事件

使用XAML Carvas  Loaded事件来建立页面和托管类的联系。在XAML文件的Loaded属性中,要指名一个要在托管代码中调用的方法名,它将用来处理这个加载事件。下面的例子将Load事件赋值给负责处理该事件的onloaded 方法。

Canvas

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    x:Class="Samples.Silverlight.CS.BasicCanvas;assembly=HtmlDOM1.dll"

   x:Name="rootCanvas"   Height="500" Width="500" Loaded="OnLoaded"

Background="Red" ></Canvas>

在托管代码中添加一个在已经在刚才的XAML文件中指名的那个onloaded方法,这个方法能处理任何的初始化任务,创建、注册对象,附加事件处理器等等。

2           public void OnLoaded(object sender, EventArgs e)

为了在事件处理方法中能够访问Dom,创建一个私有的组件级别的HtmlDocument类对象,并把它赋值给当前页面的对象。

1.                           document = HtmlPage.Document;

处理Dom 元素  为了从托管代码中获取对页面元素的引用,你可以使用HTML document  对象的GetElementByID方法来获取,这个方法跟javascript的同名方法类似,也是传递一个页面的元素id给它,来获取元素的引用。例如:

HtmlElement btnEchoText = document.GetElementByID("btnEchoText");

附加一个事件处理器:为了给button附加上一个 onlick事件,你需要先编程来获取这个button的引用,然后使用如下代码对这个控件进行事件附加处理。

bool ec1 = btnEchoText.AttachEvent("onclick", new EventHandler<HtmlEventArgs>(this.OnEchoTextClicked));

写一个真正的事件处理方法,以下的方法定义告诉你如何去声明一个私有方法来处理附加在button上的事件。

private void OnEchoTextClicked(object sender, HtmlEventArgs e)

访问Dom 元素的某个属性

使用Dom对象的属性来访问那个对象。例如你可以使用HtmlPage 对象的属性来获取当前的页面的URIUniform Resource Identifier)。

string outputText = HtmlPage.DocumentUri.AbsolutePath + " - " + HtmlPage.CurrentBookmark;

将属性信息赋值给页面的另外一个元素,例如将他赋值给一个文本框。使用SetAttribute方法设置Dom元素的属性值。

document.GetElementByID("txtOutputProperties").SetAttribute("value", outputText);

调用在html Dom中的方法:

在你需要调用的那个关联方法里面获取控件的引用。

直接调用dom方法,例如下面的方法演示当点击了按钮后如何利用HtmlPage对象的navigate方法来将浏览器跳转到另外一个url中。

private void OnJump(object sender, EventArgs e)

{

  HtmlPage.Navigate("http://www.msn.com");

}

 

不知道支持客户端CLR环境的类有多少,想必应该不多,比如肯定不会有对文件的操作,那silverlight就太恐怖了....不过我曾经幻想过它能够发起tcp连接,这样如果在架构一个非常健壮的客户端程序的时候,效率可能会高些。但是如果这样的话,会不会有黑客在silverlight代码里面发起对别的网站的频繁链接,导致目标网站崩溃呢???不过似乎这个担心不仅仅在silverlight程序上。废话一通了,不过大家还是拭目以待客户端CLR 的功能吧!(很遗憾的告诉大家,目前不支持类似flash的调用本地摄像头api来摄录或者拍大头贴,让部分视频类网站失望了。)