注入javascript以单击html按钮

注入javascript以单击html按钮,javascript,swift,Javascript,Swift,我正试图将javascript注入WKWebView,以便将项目添加到网站上的购物车中 我有一个按钮: <input type="submit" name="commit" value="add to cart" class="button"> 运行此代码时,我收到一个nil错误。我还尝试插入类型submit作为选择器,结果仍然是nil。是否可能DOM尚未加载?我试图通过在评估javascript之前添加一个临时睡眠(3)来解决这个问题,但仍然没有任何结果。 <script&

我正试图将javascript注入WKWebView,以便将项目添加到网站上的购物车中

我有一个按钮:

<input type="submit" name="commit" value="add to cart" class="button">
运行此代码时,我收到一个nil错误。我还尝试插入类型
submit
作为选择器,结果仍然是nil。是否可能DOM尚未加载?我试图通过在评估javascript之前添加一个临时睡眠(3)来解决这个问题,但仍然没有任何结果。


<script>
    function testing() {
       //your code here
    }
</script>

<!-- add onclick to yours html button -->

<input type="button" value = "Test" onclick="testing();">
功能测试(){ //你的代码在这里 }
您可以按名称获取它,然后向其中添加一个单击侦听器

document.getElementsByName("commit")[0].addEventListener('click', myFunction, false);

function myFunction() {
       //your code here
}

你差点就成功了。但是在HTML元素附加事件侦听器之前,您正在该元素上调用一个
click()
。您应该首先添加一个
eventListener
,然后调用click事件

试试这个:

  • 添加事件侦听器:

  • 请记住,
    document.getElementsByName
    返回与查询匹配的元素数组,因此返回
    [0]
    。如果您有另一个名为commit的输入,这可能会导致问题。对不起,我忘了添加我无法更改按钮的HTML结构
    document.getElementsByName("commit")[0].addEventListener('click', myFunction, false);
    
    function myFunction() {
           //your code here
    }
    
    webView.evaluateJavaScript("document.getElementsByName(\"commit\"]')[0].addEventListener('click', event => { <YOUR CODE GOES HERE> });") { (result, error) in
        if error != nil {
            print("Error: ", result)
        }
    }
    
    webView.evaluateJavaScript("document.getElementsByName('[name=\"commit\"]')[0].click()") { (result, error) in
        if error != nil {
            print("Error: ", result)
        }
    }