用cocoa将JavaScript注入网站的麻烦

时间:2012-09-01 11:23:45

标签: javascript jquery objective-c cocoa code-injection

我正在尝试将一些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);"]];

非常感谢任何帮助。感谢

1 个答案:

答案 0 :(得分: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,则找到('#form')。