[英]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.