如何使用javas内置的javascript引擎在网页上运行脚本?

时间:2010-08-11 12:12:52

标签: java javascript rhino

我想在播放器中显示歌曲的歌词。我曾经使用过lyricsplugin.com,因为它有很多英语和俄语的歌词,但最近他们已经将他们的网站从静态页面改为ajax驱动的页面。搜索歌词遵循以下模式:

http://www.lyricsplugin.com/winamp03/plugin/?artist=Linkin%20Park&title=Numb

它显示一个空页面,这在body onload中:

javascript:getContent('Linkin%20Park', 'Numb', '1281528101', '5e22e4e3979026a9af59ee16ff82fe1f')

getContent看起来像这样:

function getContent(artist, title, time, check) { 
xmlHttp = GetXmlHttpObject();
if(xmlHttp == null)
{
    return;
}
var url = "content.php?artist=" + artist + "&title=" + title + "&time=" + time + "&check=" + check;
xmlHttp.onreadystatechange = stateChanged;
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
}

stateChanged()然后将响应放入页面中的相应div。

所以我想我可以下载页面并构建一个DOM树,因为它是XHTML。如何使用内置的rhino引擎执行javascript并最好覆盖stateChanged()函数?我似乎无法直接调用content.php脚本。

除lyrics.wikia.com外,没有其他资源有那么多歌词(特别是俄语),但它们不允许屏幕抓取。

更新

lyricsplugin似乎正在使用justsomelyrics.com并且有一个谷歌自定义搜索框。我如何从java访问它?

1 个答案:

答案 0 :(得分:0)

最简单的是SWT Browser component。只需致电setURL(String),它就会显示网页。这为您提供了一个完整的浏览器,其中包含Javascript和所有内容。