UserJS fix for ASUS Product Comparison page
Tuesday, 18. September 2007, 00:59:24
The ASUS Product Comparison page seems to contain JavaScript code written specifically for MSIE or FF (untested). In any event, the page does not work correctly in Opera, mostly due to their calls to new ActiveXObject.
Below, I've taken the liberty of correcting their processRequest and add JavaScript functions found in this external load_data.js script.
Click here to download/view the asus.js script
For those of you who might use this ASUS product comparison page, enjoy.
Below, I've taken the liberty of correcting their processRequest and add JavaScript functions found in this external load_data.js script.
Click here to download/view the asus.js script
if (document.domain.match(/(uk\.)?asus\.com$/)) {
window.opera.defineMagicFunction("processRequest",
function(a, b, c) {
if (http_request.readyState != 4) return;
if (http_request.status != 200) return;
var dpl1=document.getElementById("dpl_l1");
var dpl2=document.getElementById("dpl_l2");
var dpl3=document.getElementById("dpl_l3");
var dpl4=document.getElementById("dpl_l4");
var lbl=document.getElementById("lbl_model");
var parser = new DOMParser();
var xmldoc = parser.parseFromString(http_request.responseText,"text/xml");
var dataArray = xmldoc.getElementsByTagName('Table1');
var dataArrayLen = dataArray.length;
for (var i=0; i<dataArrayLen; i++)
{
var get_id=dataArray[i].getElementsByTagName("id_name")[0].text;
var get_value=dataArray[i].getElementsByTagName("id_value")[0].text;
var opt = new Option(get_value, get_id, 0, 0);
if (l1!=0&&list_model==2) //load level 2
{
dpl2.disabled=false;
dpl2.add(opt);
}
else if(l2!=0&&list_model==3) //load level 3
{
dpl3.disabled=false;
dpl3.add(opt);
}
else if(l3!=0&&list_model==4) //load level 4
{
dpl4.disabled=false;
dpl4.add(opt);
}
else if (list_model==5)
{
dpl3.disabled=(dpl3.length==1);
lbl.add(opt);
}
}
}, 0);
window.opera.defineMagicFunction("add",
function(a, b, c) {
var lbl=document.getElementById("lbl_model");
var lbl_select=document.getElementById("lbl_model_select");
for(var i=0;i<lbl.options.length;i++)
{
if (!lbl.options[i].selected) continue;
for(var j=0;j<lbl_select.options.length;j++)
if (lbl.options[i].value==lbl_select.options[j].value)
return;
lbl_select.add(new Option(lbl.options[i].text, lbl.options[i].value));
}
}, 0);
}
For those of you who might use this ASUS product comparison page, enjoy.

