[英]How do I get the link attributes (page name) in the “Webbrowser” event when I click a link?
我计划建立一个内容管理系统。
系统组成:
-按类别的页面树。 (按类别的页面树);
- 网页浏览器。 (网页浏览器);
页面内容:
-格式化文本;
- 图片;
-参考;
HTML格式的文本存储在数据库中。
类别树显示从数据库到Web浏览器的文本。
有必要在页面之间进行转换。
也就是说,从页面“ Page_1”到页面“ Page_2”逻辑的必要段落的转换:
-用户。 它在页面“ Page_1”上。
-用户。 单击页面“ Page_1”上的链接。
-浏览器。 打开页面“ Page_2”,滚动到“ Paragraph_N”(“ N”取决于页面上的哪个段落是“ Page_1”)
我计划使用链接“ anchor”进行的页面之间的过渡
<a href="text.html#bottom"> Go to the bottom of the text </a>
我认为要执行此逻辑,需要应用程序执行以下操作:
-跟踪事件“单击链接”;
-从链接中提取链接所引用页面的名称(“ text.html”);
-根据名称从数据库中提取页面;
示例HTML代码“ Page1”和“ Page 2”
https://codeshare.io/2Bb03L
问题
1.单击链接后,如何在“ Webbrowser”事件中获取链接属性(页面名称)?
2.执行此逻辑的更合理的方法是什么(从页面“ Page_1”到页面“ Page_2”)?
3.0单击链接时如何进行以下操作:
3.1。 如果链接到网站-在Chrome中打开?
3.2。 如果从数据库链接到页面-在“ webBrowser1”中打开?
3.3。 如果链接到数据库中页面的段落-在
“ webBrowser1”并将滚动条滚动到所需的段落?
图片
回答您的第一个问题“ 单击链接时如何在“ Webbrowser”事件中获取链接属性(页面名称)? ”:
假设您的Webbrowser名为webBrowser1
:
您需要将C#对象暴露给JavaScript可以直接调用的WebBrowser,该对象必须将ComVisibleAttribute设置为true。
[System.Runtime.InteropServices.ComVisible(true)]
public class ScriptInterface
{
public void OnAnchorClick(string href)
{
var parts = href.Split('#');
var pageName = parts[0];
//do whatever with page name
}
}
配置您的Webbrowser:
webBrowser1.ObjectForScripting = new ScriptInterface();
现在,在您的js中,您可以通过以下方式调用OnAnchorClick方法:
document.getElementsByTagName('a')[0].onclick = function(){
window.external.OnAnchorClick(this.href);
return false;
}
其他有用的参考:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.