我正在使用Android的Worklight框架将浏览器制作为混合应用程序。我实现了我的地址栏作为输入元素,它接收用户输入并将参数传递给webview以加载页面。 但是,我无法弄清楚如何反过来:每当用户点击webview中的链接时,我希望地址栏更改为新位置。
答案 0 :(得分:1)
您是否正在实施已打开的本机页面?如果是这样,请看ChildBrowser,基本上做同样的事情。它有一个TextView用作地址栏。您可以决定使用它,或者从中获取您想要的零碎碎片。无论如何,我会想象你想要做什么像this。通过覆盖WebViewClient中的onLoadResource,您应该能够获取URL并更改TextBox。
回应以下评论:在wlEnvInit()函数中环境中的主要js文件:
function wlEnvInit(){
wlCommonInit();
// Environment initialization code goes here
document.onclick=manageLinks;
}
然后在这个函数中获取url并设置输入元素的文本:
function manageLinks(event) {
var link = event.target;
//go up the family tree until we find the A tag
while (link && link.tagName != 'A') {
link = link.parentNode;
}
if (link) {
var url = link.href;
console.log("url = " + url);
//You can decide if you want to separate external or
//internal links, depending on your application
var linkIsExternal = ((url.indexOf('http://') == 0) || (url.indexOf('https://') == 0));
if (linkIsExternal) {
myInput.setText(url);
return false;
}
}
return true;
}
在您的WebView内部,在插件内部拦截URL,如下所示:
webview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
//use this area to set your input. Depending on how you
//implemented your plugin, you may need to return this value
//back to your main activity
Toast.makeText(cordova.getActivity(), "Loading: " + url, Toast.LENGTH_LONG).show();
}
});
答案 1 :(得分:0)
您是否尝试从href获取url并分配给输入变量并执行get / post?我知道在SDK中我可能认为它在框架中不会更难。您可以使用解析器或类似的东西将hiperlinks存储在数组中。
示例伪代码:
When_hiperlink_clicked: //could be like a listener (search about it)
url = hiperlink.getURL("myHiperlink");
myinput.setText(url);
execute_input_bar_action();
很难找到没有代码或更多的东西,抱歉。