On 7/23/11 1:43 PM, Stanimir Stamenkov wrote:
> Sun, 17 Jul 2011 21:11:48 +0300, /Stanimir Stamenkov/:
>
>> Here's already revised code to handle forms found in frames,
>> additionally:
>>
>> let lm = Components.classes["@mozilla.org/login-manager;1"]
>> .getService(Components.interfaces.nsILoginManager);
>>
>> function fillForms(doc) {
>> let forms = doc.forms;
>> for (let i = 0; i < forms.length; i++) {
>> lm.fillForm(forms[i]);
>> }
>> }
>>
>> fillForms(content.document);
>>
>> let frames = content.frames;
>> for (let i = 0; i < frames.length; i++) {
>> fillForms(frames[i].document);
>> }
>
> Here's the code for a complimentary button which will allow saving
> the passwords on pages which normally suppress it. I've generally
> taken the code of the "remember password" [1] bookmarklet and
> enhanced it to traverse into frames:
>
> let ca, cea, cs;
> ca = cea = cs = 0;
>
> function rememberPasswords(document) {
> let documentForms = document.forms;
> for (let i = 0; i < documentForms.length; i++) {
> let form = documentForms[i];
> let formElements = form.elements;
> if (form.hasAttribute("onsubmit")) {
> form.onsubmit = "";
> cs++;
> }
> if (form.attributes["autocomplete"]) {
> form.attributes["autocomplete"].value = "on";
> ca++;
> }
> for (let j = 0; j < formElements.length; j++) {
> let element = formElements[j];
> if (element.attributes["autocomplete"]) {
> element.attributes["autocomplete"].value = "on";
> cea++;
> }
> }
> }
> }
>
> rememberPasswords(content.document);
>
> let frames = content.frames;
> for (let i = 0; i < frames.length; i++) {
> rememberPasswords(frames[i].document);
> }
>
> function n(i, what) {
> return i + " " + what + ((i == 1) ? "" : "s")
> }
> alert("Removed autocomplete=off from " + n(ca, "form")
> + " and from " + n(cea, "form element")
> + ", and removed onsubmit from " + n(cs, "form")
> + ". After you type your password and submit the form,"
> + " the browser will offer to remember your password.");
>
> Having this in a chrome button rather than as a bookmarklet should
> make it work in more cases where the password forms are found in
> frames with a different than the embedding document origin. This
> should generally make the "nsLoginManager.js" hacks suggested
> elsewhere, unnecessary.
>
> [1] https://www.squarefree.com/bookmarklets/forms.html#remember_password
>
The simple tweak in nsLoginManager.js that worked in SM 2.0.x no longer
works in SM 2.1 or 2.2 even if I unzip omni.jar to get at
nsLoginManager.js and then rezip after doing the tweak. This was
described at <http://cybernetnews.com/firefox-remember-passwords/> and
avoided the need for a bookmarklet or button.
Could you possibly come up with an effective tweak to replace it, one
that still avoids the need for user action at the time of login?
--
David E. Ross
<http://www.rossde.com/>
On occasion, I might filter and ignore all newsgroup messages
posted through GoogleGroups via Google's G2/1.0 user agent
because of spam from that source.
_______________________________________________
support-seamonkey mailing list
[email protected]
https://lists.mozilla.org/listinfo/support-seamonkey