现在要开发一个这样应用,没一点头绪,请各高手帮忙想想办法用户输入一个网页页面地址,我先读出其源代码内容.然后再将该页面显示出来.显示出该页面内容后,用户在这个页面上点击某一部分,可能是一行文字,可能是一幅图片,我要在该页面的源代码中找出用户点击部分的源代码是什么?然后再根据该部分源代码再做分析想了半天,没一点头绪,请问有什么办法可以实现该功能不?或者有没有这样的开源项目了?非常感谢了!
调试欢乐多
我不是要在浏览器里实现这个功能,我是要在我的程序中实现这个功能啊。例如我只能用一个PANEL去显示这个页面啊
> 例如我只能用一个PANEL去显示这个页面啊这样看来,你这个问题的难度倒不在于“提取选定内容的源码”,而在于“把 HTML 内容显示出来”,这一点做到了,前面一个问题也就不难了。估计你不会完全自己用程序去实现“显示 HTML 内容”的功能,应该找一个功能包。网上搜一下吧。
可以吗?
有什么难的?
在body的onload事件里面加上 onload="addEvent()"然后再在源代码内容的头部插入
<script language="JavaScript">
function showHtml()
{
alert(event.srcElement.outerHTML);
}function addEvent(){
for( var i = 0; i < form1.elements.length; i++ ){
var elm = form1.elements(i);
var tgnm = elm.tagName;
switch ( tgnm ){
catch 'IMG':
elm.attachEvent('onclick', showHtml);
break;
case 'INPUT':
elm.attachEvent('onclick', showHtml);
break;
default:
break;
}
}
}
</script>
try {
URL url = new URL("http://www.163.com");
tp.setPage(url);
} 我直接这样显示163,但效果太差了
如果还用上面的方式(用SWING)来显示网页的话,我可以在SWING上判断用户的选择的文字是什么,可以判断用户点击的链接的链接内容是什么,这样我可以在源代码里面找到用户点击或选择的内容了。但用JEditorPane显示出来的网页效果太差,FLASH内容显示不出来。我还试了一下可以用另外的方式显示出网页内容。用SWT的方式,用:org.eclipse.swt.browser这个包来显示,这样显示出来的网页效果跟IE里面显示出来的效果几乎没什么两样了。JS,CSS,连FLASH都支持了,而且里面的链接也可以点来点去的,跟在IE里看网页居然感觉没什么两样。SWT居然在org.eclipse.swt.browser这个包里面几乎实现了一个比较完整的浏览器功能了,厉害,不过我完全不知道里面的原理,以前完全没有接触过SWT开发了。运行了几次下面的代码看来看去,感觉这个SWT里的弄法好象应该是直接调用了IE一样????????。所以用SWT方式来显示的话,我不知道怎么去获得用户的点击和选择事件了。哪位高手可以帮帮忙解决捕捉这个选择和点击事件了?如果能得到这些那我的这个功能基本就能实现了。
SWT代码如下:
package com.augurit.websearch.test;import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*; public class ShowSlashdot {
public void run() {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Slashdot");
createContents(shell);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
private void createContents(Shell shell) {
shell.setLayout(new FillLayout()); // Create a web browser
Browser browser = new Browser(shell, SWT.NONE); // Navigate to Slashdot 我特意用了个比较复杂结构的视频网站来测试了
browser.setUrl("http://www.youtube.com");
} /**
* The application entry point
*
* @param args the command line arguments
*/
public static void main(String[] args) {
new ShowSlashdot().run();
}
}