Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/passman-webextension.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbrantje <brantje@gmail.com>2017-10-28 15:07:20 +0300
committerbrantje <brantje@gmail.com>2017-10-28 15:07:20 +0300
commit2559133c529ae07a689c8cbe13e9221b099578e6 (patch)
treeaf7e0a8b9949888114dc0f46ac00f114fd6160d3
parent00ddf2599b9557f031294211e2c2e9a55b89fd86 (diff)
parent881ff95166e0c43b3dcb816e7c73b7f2fb59f3ac (diff)
Merge branch 'fixFakeInputs'
-rw-r--r--js/lib/findForm.js28
1 files changed, 22 insertions, 6 deletions
diff --git a/js/lib/findForm.js b/js/lib/findForm.js
index 5b5d40d..cc8fa04 100644
--- a/js/lib/findForm.js
+++ b/js/lib/findForm.js
@@ -11,7 +11,8 @@ var formManager = function(){
settings.debug = (result);
});
},
- /*
+ /**
+ *
* _isAutoCompleteDisabled
*
* Returns true if the page requests autocomplete be disabled for the
@@ -20,8 +21,15 @@ var formManager = function(){
isAutocompleteDisabled: function (element) {
return !!(element && element.hasAttribute("autocomplete") && element.getAttribute("autocomplete").toLowerCase() === "off");
},
-
- /*
+ /**
+ * Check if if an element is visible
+ * @param element
+ * @returns {boolean}
+ */
+ isElementVisible: function (element) {
+ return !!( element.offsetWidth || element.offsetHeight || element.getClientRects().length );
+ },
+ /**
* _getPasswordFields
*
* Returns an array of password field elements for the specified form.
@@ -34,18 +42,22 @@ var formManager = function(){
// Locate the password fields in the form.
var pwFields = [];
for (var i = 0; i < form.elements.length; i++) {
- if (form.elements[i].type !== "password"){
+ var elem = form.elements[i];
+ if (elem.type !== "password"){
continue;
}
+ if(!this.isElementVisible(elem)){
+ continue;
+ }
- if (skipEmptyFields && !form.elements[i].value){
+ if (skipEmptyFields && !elem.value){
continue;
}
pwFields[pwFields.length] = {
index: i,
- element: form.elements[i]
+ element: elem
};
}
@@ -88,11 +100,15 @@ var formManager = function(){
}
+
// Locate the username field in the form by searching backwards
// from the first passwordfield, assume the first text field is the
// username. We might not find a username field if the user is
// already logged in to the site.
for (var i = pwFields[0].index - 1; i >= 0; i--) {
+ if(!this.isElementVisible(form.elements[i])){
+ continue;
+ }
if (form.elements[i].type.toLowerCase() === "text" || form.elements[i].type.toLowerCase() === "email") {
usernameField = form.elements[i];
break;