[英]How do I tell which javascript framework is validating forms on a website
我正在尝试构建一个Chrome扩展程序,以将数据输入到toyrus.com和macys.com等网站的在线表单中。 chrome扩展程序可以将javascript注入网站以进行测试。 我正在尝试确定正在使用哪个框架在网站上进行表单验证。
我必须更改输入字段,例如为州选择“ CA”,或使用javascript输入姓氏。 但是,如果我不知道他们使用的是什么系统,我将无法做到这一点。 每个框架都有其自己的规则,用于更改输入字段并在框架中进行更改注册。
我正在尝试查看是否有任何方法可以判断哪个框架正在执行验证,因此我可以使用正确的命令。
就Toysrus.com而言,prototype.js和jquery都按照是否存在变量jQuery或Prototype进行检测,但我必须使用原型语法来获取和更改表单而不是jquery的值。 我不得不通过大量的尝试和错误来手动执行此操作。
有什么我可以写并注入页面的JavaScript来告诉您正在使用哪个框架来验证这些网站上的表单。
我注意到在$(“#elementid”)以上返回null的情况下,但是$(“ elementid”)返回了实际元素。 那告诉我原型正在做实际的验证。 是否有任何测试或js库可以确定元素上使用的框架?
mate,对于您的具体情况,您的原型和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,即纯javascript!
首先,除非您要做复杂的事情需要框架,否则仅使用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(...)
而不是$(...)
如果其他框架正在使用$
则可以避免感到困惑。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.