【发布时间】:2012-03-02 07:27:15
【问题描述】:
我正在尝试加载一个页面,然后在其上运行一个 javascript 代码,我发现了一个相同功能的 Greasemonkey 脚本,但是我在 android 中实现相同的东西时遇到了问题,可能是因为我对它一无所知javascript。
这是 Greasemonkey 脚本;它应该提供一个新链接:
window.addEventListener("load", function ()
{
var link = document.evaluate("//div[@class='dl_startlink']/div/a[contains(@href,'"+window.location.href.match(/\?(.*)$/)[1]+"')]", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
if( !link.snapshotLength )
return;
location.href = link.snapshotItem(0).href;
}, false);
这就是我想要运行它的方式:
public void onPageFinished (WebView view, String url) {
System.out.println("webview loaded");
webView.loadUrl("javascript:/*...........Javascript code here........*/");
}
关于如何获取该链接并在 web 视图中加载该页面的任何想法? 编辑:另一个版本做同样的事情。
var candidates = document.evaluate("//*[@class = 'dl_startlink']/div", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
if( !candidates.snapshotLength )
return;
//The DIV with the highest zIndex has the *real* link; the rest are useless.
- var maxDiv = candidates.snapshotItem(0);
- for( var i = 1; i < candidates.snapshotLength; i++ )
- if( maxDiv.style.zIndex < candidates.snapshotItem(i).style.zIndex )
- maxDiv = candidates.snapshotItem(i);
- location.href = maxDiv.children[0].href;
【问题讨论】:
-
您是否尝试过缩小该代码(在函数内),用
%20替换空格并将其放入链接中? -
@kirilloid 不,我不知道这将如何工作,据我所知,此代码特定于用户脚本,因为 ex document.evaluate 仅适用于 firefox..
标签: javascript android greasemonkey android-webview userscripts