Javascript 将jQuery函数作为字符串传递

Javascript 将jQuery函数作为字符串传递,javascript,jquery,Javascript,Jquery,故事背景: 我有几个网页,其中我需要完成许多输入字段的数据 为了不浪费时间(在测试时),我有一个JavaScript文件可以帮助我(我在e2e测试中使用它) 我在浏览器中创建了一个书签,并在其中添加了以下URL: 此路径src='../path_to_另一个_js_文件.js'将打开一个js文件,其中包含下一个内容: 问题: 我想从书签中删除src='../path\u到另一个\u js\u file.js',并将此外部文件中的函数作为字符串传递,而不是该路径,如下所示: javasc

故事背景:

  • 我有几个网页,其中我需要完成许多输入字段的数据

  • 为了不浪费时间(在测试时),我有一个JavaScript文件可以帮助我(我在e2e测试中使用它)

  • 我在浏览器中创建了一个书签,并在其中添加了以下URL:

  • 此路径
    src='../path_to_另一个_js_文件.js'
    将打开一个js文件,其中包含下一个内容:
问题

我想从书签中删除
src='../path\u到另一个\u js\u file.js'
,并将此外部文件中的函数作为字符串传递,而不是该路径,如下所示:

javascript:(function()document.body.appendChild(document.createElement('script'))
.textContent(String(
    (function ($) {
        var fieldData = {
            "ContactData.EMail": "test@test.com",
            "ContactData.EMailConfirmation": "test@test.com",
            //etc...
        };
    })(jQuery);
))})();
在任何情况下我都不能这样做,因为这不会被执行/由于一些语法问题,它甚至不会在我的FE中创建js脚本


你们有没有遇到过和我一样的情况??10X

您的代码应该如下所示:

javascript:(function ($) {
    var fieldData = {
        "ContactData.EMail": "test@test.com",
        "ContactData.EMailConfirmation": "test@test.com",
        etc...
    };
})(jQuery);

不需要脚本标记。另外,在bookmarkelet的主函数中缺少大括号时出错。

很接近,但存在一些语法问题。这应该与您现在拥有的脚本标记相同:

javascript:(function(){
    var el = document.createElement('script');
    el.innerHTML = `(function ($) {
    var fieldData = {
        "ContactData.EMail": "test@test.com",
        "ContactData.EMailConfirmation": "test@test.com",
        //etc...
    };
})(jQuery);`;
    document.body.appendChild(el);
})();

用户可以使用userscript和Tampermonkey代替,目前,它们都不是一个选项。我必须这样做,因为我正在一个自动化的e2e测试脚本中使用它:)元素
script
src
属性专门用于指向URL。你不能在里面放任何你想要的东西。如果你想要一个书签,写它,它不需要在<代码>脚本< /代码>元素。好,然后考虑我正在使用TeXCopeTune(),或者其他的东西。问题是一样的。或者指向一种方法/方式,它允许我通过在书签中添加这样的内容来将其用作自动填充脚本。是的,语法问题以这种方式解决了,但不再执行输入字段的完成。所以,我想我必须让它工作,同时还要有script标签:)@Eugen不,你不必,但是做这件事的代码需要在bookmarklet中。它可以随对象而变化,它需要做一些事情。除非这个对象需要是全局变量,否则您需要
window.fieldData={…}
great,您的示例应该非常适合;但是,正如你所说,有一些语法问题;你能不能修改一下这个例子,试着摆脱那些语法问题?我似乎无法匹配正确的字符串…问题是我总是会有一个[“]或者['],它会告诉js字符串将在那里结束,这不是。。。
javascript:(function ($) {
    var fieldData = {
        "ContactData.EMail": "test@test.com",
        "ContactData.EMailConfirmation": "test@test.com",
        etc...
    };
})(jQuery);
javascript:(function(){
    var el = document.createElement('script');
    el.innerHTML = `(function ($) {
    var fieldData = {
        "ContactData.EMail": "test@test.com",
        "ContactData.EMailConfirmation": "test@test.com",
        //etc...
    };
})(jQuery);`;
    document.body.appendChild(el);
})();