0

我正在尝试将一些 javascript 注入我不拥有的网站。我试图注入的代码如下:

function submitFormForTime(time){
    $(".t_h").each(function(i, obj){ // find each element with the class t_h
        if ($(this).text() != time) return; // not the right one
        $(this).parent().find("form").each(function(i, obj){
            obj.submit(); // submit that form
        });
    });
}

这不起作用。看来我使用的方法stringByEvaluatingJavaScriptFromString, 不适用于嵌套括号或其他任何东西。它适用于简单的代码。

问题是代码根本没有被注入

我的完整代码如下:

[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"var script = document.createElement('script');"
                            "script.type = 'text/javascript';"
                            "script.text = \"function submitFormForTime(time){ "
                                "$(\".t_h\").each(function(i, obj){"
                                "if ($(this).text() != time) return;"
                                    "$(this).parent().find(\"form\").each(function(i, obj){"
                                        "obj.submit();"
                                    "});"
                                "});"
                            "}\";"
                            "document.getElementsByTagName('head')[0].appendChild(script);"]];

任何帮助将不胜感激。谢谢

4

1 回答 1

1

好吧,没有很多麻烦,我可以看到一些小东西。我重写了,也许你可以试试。

[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@
                        "var script = document.createElement('script');"
                        "script.type = 'text/javascript';"
                        "script.text = function submitFormForTime(time) { $('.t_h').each(function(i, obj) { if ($(this).text() == time) $(this).parent().find('form').each(function(i, obj){ obj.submit(); }); }); } document.getElementsByTagName('head')[0].appendChild(script);"]];

我希望它像那样工作。

基本上我删除了一些双引号,并用单引号替换了一些,而不必转义它们。我将所有脚本文本写在一行上。

如果 form 是一个类,则 find('form') 应该是 find('.form'),如果 form 是一个 id,则应该是 find('#form')。

于 2012-09-01T11:57:51.243 回答