Update firerecord.js

Added the playback function, which at the moment displays the script line by line in a for loop when the play button is clicked. also formatted code slightly
This commit is contained in:
David Westgate 2013-04-28 13:52:58 -03:00
parent d3edd458a0
commit edb54b86e1

View File

@ -4,19 +4,23 @@ var loadx = null;
var page = null; var page = null;
window.addEventListener("load", function load(event) { window.addEventListener("load", function load(event) {
window.removeEventListener("load", load, false); //remove listener, no longer needed window.removeEventListener("load", load, false); // remove listener, no
// longer needed
firerecord.init(); firerecord.init();
}, false); }, false);
var firerecord = function() { var firerecord = function() {
var prefManager = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch); var prefManager = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefBranch);
return { return {
init : function() { init : function() {
getBrowser().addEventListener("load", function (){alert("loaded");}); getBrowser().addEventListener("load", function() {
alert("loaded");
});
var appcontent = document.getElementById("appcontent"); // browser var appcontent = document.getElementById("appcontent"); // browser
if (appcontent) { if (appcontent) {
appcontent.addEventListener("DOMContentLoaded", firerecord.run, true); appcontent.addEventListener("DOMContentLoaded", firerecord.run,
true);
} }
}, },
@ -28,8 +32,7 @@ var firerecord = function () {
openUILinkIn(window.content.location.href, "current"); openUILinkIn(window.content.location.href, "current");
// document.location.reload(); // document.location.reload();
// closes all tabs on firefox. // closes all tabs on firefox.
} } else {
else{
recordingx = true; recordingx = true;
alert("Start Listen"); alert("Start Listen");
// createFile("Initialize New Test File"); // createFile("Initialize New Test File");
@ -44,27 +47,24 @@ var firerecord = function () {
}, },
newfile : function() { newfile : function() {
path = io.newPath(); path = io.newPath();
createFile(); io.createFile(path);
}, },
// rylan // rylan
/*file: function(){ /*
const nsIFilePicker = Components.interfaces.nsIFilePicker; * file: function(){ const nsIFilePicker =
* Components.interfaces.nsIFilePicker;
var fp = Components.classes["@mozilla.org/filepicker;1"] *
.createInstance(nsIFilePicker); * var fp = Components.classes["@mozilla.org/filepicker;1"]
fp.init(window, "Dialog Title", nsIFilePicker.modeOpen); * .createInstance(nsIFilePicker); fp.init(window, "Dialog Title",
fp.appendFilters(nsIFilePicker.filterAll | nsIFilePicker.filterText); * nsIFilePicker.modeOpen); fp.appendFilters(nsIFilePicker.filterAll |
* nsIFilePicker.filterText);
var rv = fp.show(); *
if (rv == nsIFilePicker.returnOK || rv == nsIFilePicker.returnReplace) { * var rv = fp.show(); if (rv == nsIFilePicker.returnOK || rv ==
var file = fp.file; * nsIFilePicker.returnReplace) { var file = fp.file; // Get the path as
// Get the path as string. Note that you usually won't * string. Note that you usually won't // need to work with the string
// need to work with the string paths. * paths. path = fp.file.path; // work with returned nsILocalFile...
path = fp.file.path; * } },
// work with returned nsILocalFile... */
}
},*/
// rylan // rylan
checkpage : function(readloc) { checkpage : function(readloc) {
@ -83,10 +83,22 @@ var firerecord = function () {
var d = "null"; var d = "null";
var e = "null"; var e = "null";
var f = "null"; var f = "null";
setTimeout(function(){firerecord.checkpage(a);},5000); setTimeout(function() {
setTimeout(function(){firerecord.fire(b,c,d,e,f);},8000); firerecord.checkpage(a);
}, 5000);
setTimeout(function() {
firerecord.fire(b, c, d, e, f);
}, 8000);
// setTimeout(function(){firerecord.fireExp();},8000); // setTimeout(function(){firerecord.fireExp();},8000);
}, },
// David
playback : function() {
var playThis = io.getLine(path);
for(var i = 0; i < playThis.length; i++)
{
alert(playThis[i]);
}
},
// rylan // rylan
nullCheck : function(elem) { nullCheck : function(elem) {
@ -140,24 +152,17 @@ var firerecord = function () {
}, },
/* /*
*
//rylan * //rylan fireExp: function(){ var all =
fireExp: function(){ * content.document.getElementsByTagName("A"); for (var i = 0; i <
var all = content.document.getElementsByTagName("A"); * all.length; ++i) { var elem = all[i]; if (i==62){ var obj =
for (var i = 0; i < all.length; ++i) { * document.createEvent("MouseEvents"); obj.initEvent("click", true,
var elem = all[i]; * true); elem.dispatchEvent(obj); } } },
if (i==62){ */
var obj = document.createEvent("MouseEvents");
obj.initEvent("click", true, true);
elem.dispatchEvent(obj);
}
}
},*/
// rylan // rylan
fire : function(b, c, d, e, f) { fire : function(b, c, d, e, f) {
var all = content.document.getElementsByTagName(b); var all = content.document.getElementsByTagName(b);
for ( var i = 0; i < all.length; ++i) { for ( var i = 0; i < all.length; ++i) {
var elem = all[i]; var elem = all[i];
@ -176,72 +181,65 @@ var firerecord = function () {
break; break;
case "BUTTON": case "BUTTON":
if (elem.name == c && elem.type == d && elem.value == e && elem.form == f) if (elem.name == c && elem.type == d && elem.value == e
{ && elem.form == f) {
var obj = document.createEvent("MouseEvents"); var obj = document.createEvent("MouseEvents");
obj.initEvent("click", true, true); obj.initEvent("click", true, true);
elem.dispatchEvent(obj); elem.dispatchEvent(obj);
} }
break; break;
case "FORM": case "FORM":
if (elem.name == c && elem.length == d && elem.target == e && elem.action == f) if (elem.name == c && elem.length == d && elem.target == e
{ && elem.action == f) {
var obj = document.createEvent("MouseEvents"); var obj = document.createEvent("MouseEvents");
obj.initEvent("click", true, true); obj.initEvent("click", true, true);
elem.dispatchEvent(obj); elem.dispatchEvent(obj);
} }
break; break;
case "IMG": case "IMG":
if (elem.name == c && elem.src == d) if (elem.name == c && elem.src == d) {
{
var obj = document.createEvent("MouseEvents"); var obj = document.createEvent("MouseEvents");
obj.initEvent("click", true, true); obj.initEvent("click", true, true);
elem.dispatchEvent(obj); elem.dispatchEvent(obj);
} }
break; break;
case "INPUT": case "INPUT":
if (elem.name == c && elem.type == d && elem.value == e) if (elem.name == c && elem.type == d && elem.value == e) {
{
var obj = document.createEvent("MouseEvents"); var obj = document.createEvent("MouseEvents");
obj.initEvent("click", true, true); obj.initEvent("click", true, true);
elem.dispatchEvent(obj); elem.dispatchEvent(obj);
} }
break; break;
case "LINK": case "LINK":
if (elem.href == c && elem.type == d && elem.charset == e) if (elem.href == c && elem.type == d && elem.charset == e) {
{
var obj = document.createEvent("MouseEvents"); var obj = document.createEvent("MouseEvents");
obj.initEvent("click", true, true); obj.initEvent("click", true, true);
elem.dispatchEvent(obj); elem.dispatchEvent(obj);
} }
break; break;
case "OPTION": case "OPTION":
if (elem.text == c && elem.value == d && elem.index == e) if (elem.text == c && elem.value == d && elem.index == e) {
{
var obj = document.createEvent("MouseEvents"); var obj = document.createEvent("MouseEvents");
obj.initEvent("click", true, true); obj.initEvent("click", true, true);
elem.dispatchEvent(obj); elem.dispatchEvent(obj);
} }
break; break;
case "SELECT": case "SELECT":
if (elem.type == c && elem.name == d && elem.size == e) if (elem.type == c && elem.name == d && elem.size == e) {
{
var obj = document.createEvent("MouseEvents"); var obj = document.createEvent("MouseEvents");
obj.initEvent("click", true, true); obj.initEvent("click", true, true);
elem.dispatchEvent(obj); elem.dispatchEvent(obj);
} }
break; break;
case "TABLE": case "TABLE":
if (elem.summary == c && elem.caption == d) if (elem.summary == c && elem.caption == d) {
{
var obj = document.createEvent("MouseEvents"); var obj = document.createEvent("MouseEvents");
obj.initEvent("click", true, true); obj.initEvent("click", true, true);
elem.dispatchEvent(obj); elem.dispatchEvent(obj);
} }
break; break;
case "TEXTAREA": case "TEXTAREA":
if (elem.name == c && elem.type == d && elem.value == e) if (elem.name == c && elem.type == d && elem.value == e) {
{
var obj = document.createEvent("MouseEvents"); var obj = document.createEvent("MouseEvents");
obj.initEvent("click", true, true); obj.initEvent("click", true, true);
elem.dispatchEvent(obj); elem.dispatchEvent(obj);
@ -250,22 +248,19 @@ var firerecord = function () {
} }
} }
}, },
run : function() { run : function() {
var head = content.document.getElementsByTagName("head")[0], var head = content.document.getElementsByTagName("head")[0], style = content.document
style = content.document.getElementById("link-target-finder-style"), .getElementById("link-target-finder-style"), all = content.document
all = content.document.getElementsByTagName("*"), .getElementsByTagName("*"), foundElements = 0;
foundElements = 0;
var info = new Array(); // Made this global var info = new Array(); // Made this global
var Recording = true; // Just need this until we finish with the the buttons. var Recording = true; // Just need this until we finish with the
// the buttons.
if (!style) { if (!style) {
style = content.document.createElement("link"); style = content.document.createElement("link");
@ -283,9 +278,11 @@ var firerecord = function () {
// Define the classname variable // Define the classname variable
elm = all[i]; elm = all[i];
// deleted local call to new array info // deleted local call to new array info
var validtags = ["A", "BUTTON", "FORM", "IMG", "INPUT", "LINK", "OPTION", "SELECT", "TABLE", "TEXTAREA"]; var validtags = [ "A", "BUTTON", "FORM", "IMG", "INPUT",
"LINK", "OPTION", "SELECT", "TABLE", "TEXTAREA" ];
// Add a click event listener to all the valid tags. // Add a click event listener to all the valid tags.
if (validtags.indexOf(all[i].tagName) < 0) continue; if (validtags.indexOf(all[i].tagName) < 0)
continue;
info[0] = all[i].tagName; info[0] = all[i].tagName;
@ -295,57 +292,68 @@ var firerecord = function () {
// All of these cases need null checks for each attribute. // All of these cases need null checks for each attribute.
case "INPUT": case "INPUT":
elm.className += ((elm.className.length > 0) ? " " : "") + "link-target-finder-selected"; elm.className += ((elm.className.length > 0) ? " " : "")
+ "link-target-finder-selected";
elm.addEventListener("keyup", handleType, false); elm.addEventListener("keyup", handleType, false);
break; break;
case "A": case "A":
elm.className += ((elm.className.length > 0) ? " " : "")
elm.className += ((elm.className.length > 0) ? " " : "") + "link-target-finder-selected"; + "link-target-finder-selected";
elm.addEventListener("click", handleEvent, false); elm.addEventListener("click", handleEvent, false);
break; break;
case "BUTTON": case "BUTTON":
elm.className += ((elm.className.length > 0) ? " " : "") + "link-target-finder-selected"; elm.className += ((elm.className.length > 0) ? " " : "")
+ "link-target-finder-selected";
elm.addEventListener("click", handleEvent, false); elm.addEventListener("click", handleEvent, false);
break; break;
case "FORM": case "FORM":
elm.className += ((elm.className.length > 0) ? " " : "") + "link-target-finder-selected"; elm.className += ((elm.className.length > 0) ? " " : "")
+ "link-target-finder-selected";
elm.addEventListener("click", handleEvent, false); elm.addEventListener("click", handleEvent, false);
break; break;
case "IMG": case "IMG":
elm.className += ((elm.className.length > 0) ? " " : "") + "link-target-finder-selected"; elm.className += ((elm.className.length > 0) ? " " : "")
+ "link-target-finder-selected";
elm.addEventListener("click", handleEvent, false); elm.addEventListener("click", handleEvent, false);
break; break;
/*case "INPUT": /*
* case "INPUT":
elm.className += ((elm.className.length > 0) ? " " : "") + "link-target-finder-selected"; *
elm.addEventListener("click", handleEvent, false); * elm.className += ((elm.className.length > 0) ? " " : "") +
break;*/ * "link-target-finder-selected";
* elm.addEventListener("click", handleEvent, false); break;
*/
case "LINK": case "LINK":
elm.className += ((elm.className.length > 0) ? " " : "") + "link-target-finder-selected"; elm.className += ((elm.className.length > 0) ? " " : "")
+ "link-target-finder-selected";
elm.addEventListener("click", handleEvent, false); elm.addEventListener("click", handleEvent, false);
break; break;
case "OPTION": case "OPTION":
elm.className += ((elm.className.length > 0) ? " " : "") + "link-target-finder-selected"; elm.className += ((elm.className.length > 0) ? " " : "")
+ "link-target-finder-selected";
elm.addEventListener("click", handleEvent, false); elm.addEventListener("click", handleEvent, false);
break; break;
case "SELECT": case "SELECT":
elm.className += ((elm.className.length > 0) ? " " : "") + "link-target-finder-selected"; elm.className += ((elm.className.length > 0) ? " " : "")
+ "link-target-finder-selected";
elm.addEventListener("click", handleEvent, false); elm.addEventListener("click", handleEvent, false);
break; break;
case "TABLE": case "TABLE":
elm.className += ((elm.className.length > 0) ? " " : "") + "link-target-finder-selected"; elm.className += ((elm.className.length > 0) ? " " : "")
+ "link-target-finder-selected";
elm.addEventListener("click", handleEvent, false); elm.addEventListener("click", handleEvent, false);
break; break;
case "TEXTAREA": case "TEXTAREA":
elm.className += ((elm.className.length > 0) ? " " : "") + "link-target-finder-selected"; elm.className += ((elm.className.length > 0) ? " " : "")
+ "link-target-finder-selected";
elm.addEventListener("click", handleEvent, false); elm.addEventListener("click", handleEvent, false);
break; break;
@ -355,11 +363,8 @@ var firerecord = function () {
} }
// ---------------------------------------------------------------- // ----------------------------------------------------------------
} }
}; };
// rylan // rylan
@ -370,17 +375,12 @@ var firerecord = function () {
} }
if (e.target) { if (e.target) {
targ = e.target; targ = e.target;
} } else if (e.srcElement) {
else if (e.srcElement) {
targ = e.srcElement; targ = e.srcElement;
} }
// --------------------------------------------------------------------- // ---------------------------------------------------------------------
// _____________________________________________________________________ // _____________________________________________________________________
var taginfo = new Array(); var taginfo = new Array();
@ -414,12 +414,12 @@ var firerecord = function () {
taginfo[2] = targ.src; taginfo[2] = targ.src;
break; break;
/*case "INPUT": /*
taginfo[1] = targ.name; * case "INPUT": taginfo[1] = targ.name; taginfo[2] = targ.type;
taginfo[2] = targ.type; * taginfo[3] = targ.value;
taginfo[3] = targ.value; *
* break;
break;*/ */
case "LINK": case "LINK":
taginfo[1] = targ.href; taginfo[1] = targ.href;
taginfo[2] = targ.type; taginfo[2] = targ.type;
@ -452,7 +452,6 @@ var firerecord = function () {
} }
if (!taginfo[1]) { if (!taginfo[1]) {
taginfo[1] = "null"; taginfo[1] = "null";
} }
@ -466,18 +465,12 @@ var firerecord = function () {
taginfo[4] = "null"; taginfo[4] = "null";
} }
/* /*
var positionFind = content.document.getElementsByTagName(taginfo[0]); * var positionFind = content.document.getElementsByTagName(taginfo[0]);
for (var i = 0; i < positionFind.length; ++i) { * for (var i = 0; i < positionFind.length; ++i) { if (targ =
if (targ = positionFind[i]){ * positionFind[i]){ taginfo[5] = i;
taginfo[5] = i; * } } alert(taginfo[5]);
*/
}
}
alert(taginfo[5]);*/
var contents = taginfo.join(' :: ') + "\n"; var contents = taginfo.join(' :: ') + "\n";
@ -485,41 +478,11 @@ var firerecord = function () {
io.appendPath(path, contents); io.appendPath(path, contents);
e.cancelBubble = true; e.cancelBubble = true;
}; }
;
}(); }();
function createFile() {
alert("created File");
var file1 = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file1.initWithPath(path);
//alert("create file nullcheck" +file1.toString());
var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
// use 0x02 | 0x10 to open file for appending.
foStream.init(file1, 0x02 | 0x08 | 0x20, 438, 0);
var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"].
createInstance(Components.interfaces.nsIConverterOutputStream);
converter.init(foStream, "UTF-8", 0, 0);
converter.close(); // this closes foStream
}
function appendFile(contents) {
alert("appended File");
var file1 = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
file1.initWithPath(path);
//alert("append file nullcheck: "+file1.toString());
var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
// use 0x02 | 0x10 to open file for appending.
foStream.init(file1, 0x02 | 0x10, 438, 0);
var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"].
createInstance(Components.interfaces.nsIConverterOutputStream);
converter.init(foStream, "UTF-8", 0, 0);
converter.writeString(contents);
converter.close();
}
function handleType(e) { function handleType(e) {
var targ; var targ;
if (!e) { if (!e) {
@ -527,8 +490,7 @@ function handleType(e) {
} }
if (e.target) { if (e.target) {
targ = e.target; targ = e.target;
} } else if (e.srcElement) {
else if (e.srcElement) {
targ = e.srcElement; targ = e.srcElement;
} }
alert("Type Changed"); alert("Type Changed");