我正在尝试构建Chrome扩展程序,以便将数据输入到toysrus.com和macys.com等网站上的在线表单中。 chrome扩展可以将javascript注入网站进行测试。我正在尝试确定在网站上使用哪个框架进行表单验证。
我必须更改输入字段,例如为State选择“CA”,或使用javascript输入姓氏。但如果我不知道他们使用什么系统,我就不能这样做。每个框架都有自己的规则来更改输入字段并将更改注册到框架中。
我正在尝试查看是否有任何方法可以判断哪个框架正在进行验证,因此我可以使用正确的命令。
在toysrus.com的情况下,prototype.js和jquery都是通过变量jQuery或Prototype存在检测到的, 但我必须使用原型语法来获取和更改表单中的值而不是jquery。我必须手动通过大量试验和错误来做到这一点。
我是否可以编写任何javascript并注入页面,以告知哪些框架用于验证这些网站上的表单。
我注意到在上面的情况下$(“#elementid”)返回null,但是$(“elementid”)返回了一个实际的元素。那告诉我Prototype正在进行实际验证。是否有任何测试或js库可以确定元素上使用的框架?
答案 0 :(得分:0)
交配,对于你的具体情况,你的原型和jquery与美元符号冲突,
这样做:
<!-- Another way to put jQuery into no-conflict mode. -->
<script src="prototype.js"></script>
<script src="jquery.js"></script>
<script>
jQuery.noConflict();
jQuery( document ).ready(function( $ ) {
// You can use the locally-scoped $ in here as an alias to jQuery.
$( "div" ).hide();
});
// The $ variable in the global scope has the prototype.js meaning.
window.onload = function(){
var mainDiv = $( "main" );
}
</script>
`
更新: 如果你坚持使用框架,只有可能的方式是使用纯粹的javascript,那个香草js!
答案 1 :(得分:0)
首先,除非你有复杂的事情需要一个框架,否则最简单的方法就是使用document.querySelector()
或document.querySelectorAll()
并使用普通的Javascript而不用担心框架。
如果您确实想确定哪个框架存在,那么您可以为每个框架开发一个功能测试,并按照您关注的顺序对其进行测试。
例如:
if (typeof jQuery !== "undefined") {
// jQuery present
} else if (typeof angular !== "undefined") {
// angular present
} else if (typeof Prototype !== "undefined") {
// Prototype present
} else if (typeof dojo !== "undefined") {
// dojo present
} else {
// don't see any framework
}
根据您正在尝试做的事情,每个框架都可以进行更全面的测试。
仅供参考,在不熟悉的页面中使用jQuery时,我建议使用jQuery
作为您的根标识符,而不是$
,而不是jQuery(...)
,而不是$(...)
。如果某个其他框架正在使用$
,这将防止混淆。