如何判断哪个javascript框架正在验证网站上的表单

时间:2015-10-20 00:44:25

标签: javascript jquery frameworks prototype

我正在尝试构建Chrome扩展程序,以便将数据输入到toysrus.com和macys.com等网站上的在线表单中。 chrome扩展可以将javascript注入网站进行测试。我正在尝试确定在网站上使用哪个框架进行表单验证。

我必须更改输入字段,例如为State选择“CA”,或使用javascript输入姓氏。但如果我不知道他们使用什么系统,我就不能这样做。每个框架都有自己的规则来更改输入字段并将更改注册到框架中。

我正在尝试查看是否有任何方法可以判断哪个框架正在进行验证,因此我可以使用正确的命令。

在toysrus.com的情况下,prototype.js和jquery都是通过变量jQuery或Prototype存在检测到的, 但我必须使用原型语法来获取和更改表单中的值而不是jquery。我必须手动通过大量试验和错误来做到这一点。

我是否可以编写任何javascript并注入页面,以告知哪些框架用于验证这些网站上的表单。

我注意到在上面的情况下$(“#elementid”)返回null,但是$(“elementid”)返回了一个实际的元素。那告诉我Prototype正在进行实际验证。是否有任何测试或js库可以确定元素上使用的框架?

2 个答案:

答案 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(...),而不是$(...)。如果某个其他框架正在使用$,这将防止混淆。