如何在webview tasker元素上发送JavaScript或jquery命令

How send JavaScript or jquery commands on webview tasker elements?

本文关键字:JavaScript jquery 命令 webview tasker 元素      更新时间:2023-09-26
  1. 我用创建了一个场景和webview1元素

    • 模式:url
    • 来源:www.google.com

  2. 创建了显示场景的任务
  3. 现在,我想创建一个JavaScript任务发送到Webview:

    • $("#q").val("Chuck Norris")
    • $("按钮#搜索").click()

PS:我不想只执行Javascript,我想在打开的Webview中执行它。

我真的不明白当你需要的东西可以实现时,创建网络视图场景并对其进行操作可能有什么意义"默默地";。您可以在不查看的情况下查询网页并遍历其DOM结构。

Tasker确实支持JavaScript和加载外部库。查看此处以获得更详细的解释:tasker.wikidot.com/userguide en:javascript

或者,您可以试试SL4A:code.google.com/p/android-scripting/

您是否尝试在WebView属性的页面加载事件中添加操作(Javascript或SL4A)?

//编辑

@fredericoallan

您需要做/使用的是使用HTTP GETHTTP POST来发送标头和处理会话(我确实建议使用tasker插件:RESTask,因为它允许发送标头)。但首先要做的事。

先决条件

为了能够发送标题和设置会话,您需要在打开页面和/或单击login按钮时了解正在发送的标题和Cookie。要看到这一点(如果你使用chrome),你可以使用chrome的内置开发工具。只需右键单击页面上的某个位置并选择";检查元件";。在将出现的窗口中,转到选项卡";网络";

会话

只需刷新页面并观察network选项卡。列表上的第一个请求应该是GET方法并键入text/html。单击它。在右侧窗格中选择"headers"选项卡。您现在应该注意到,我们的会话ID存储在PHPSESSID下的cookie中。我们稍后需要这些信息

收割台

若要登录,您需要有一个打开的会话,否则服务器将拒绝您的访问。我们已经检查了会话密钥的存储方式和位置,因此我们可以查看登录标头(我们需要知道您的用户名和密码是如何发送到服务器的)。

如果开发人员工具仍处于打开状态,请单击login按钮。network选项卡的内容应该已更改。我们感兴趣的是发送的第一个请求(index.php?act=login,方法POST,类型text/html)。当点击时,我们应该会看到远程地址、请求URL、请求方法以及Form Data下面的一些内容,其中包含用户名、密码和提交属性。

构建Tasker的任务

现在,在收集了所有这些信息后,我们可以继续构建一个任务,该任务将使我们登录

  1. 创建指向redmine.demo.org的HTTP GET操作(没有其他参数/头)。在服务器响应中,您将收到要设置的HTML标记、标头和cookie
  2. 从cookie中提取%sessionID(使用变量搜索和替换或变量部分)
  3. 创建指向https://www.untergrund.net/index.php?act=loginpost的HTTP POST操作,其标头为Cookie=%sessionID,参数为username=%useridpassword=%passPHPSESSID=%sessionID

您现在已登录。收到的响应将包含登录时显示的页面。

代码示例

HTTP loggin in (119)
A1: RESTask [ Configuration:REST call Package:com.freehaha.restask Name:RESTask Timeout (Seconds):30 ] 
A2: Test Variable [ Type:Length Data:%rthdr_set_cookie Store Result In:%sesslen ] 
A3: Variable Section [ Name:%rthdr_set_cookie From:1 Length:%sesslen-8 Adapt To Fit:Off Store Result In:%sessionID ] 
A4: RESTask [ Configuration:REST call Package:com.freehaha.restask Name:RESTask Timeout (Seconds):30 ]