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:
- 此路径
将打开一个js文件,其中包含下一个内容:src='../path_to_另一个_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);
})();