writeln img src 提交数据到外部系统 - Firefox 和 IE 挂

writeln img src to submit data to external system - Firefox and IE hanging

我一直在网上搜索以找到解决我遇到的问题的方法。我对 Javascript 比较陌生,所以请原谅。

单击结帐页面上的下一步按钮后,脚本 运行 将数据提交到电子商务系统。我在上面添加了一个脚本,它也可以获取数据并将其放入我们正在使用的电子邮件营销系统中。该脚本查看是否勾选了复选框。是否勾选我正在使用下面的代码编写一个 img 和 src 传输数据。

这在 Chrome 和 Safari 中完美运行,但 Firefox 和 IE 不加载下一页并且似乎在等待 img 的 return(当然不存在),但数据已成功添加到外部系统营销系统。

我真的很感激任何建议,因为我很快就会在这个问题上失去理智。

document.getElementById("idBtnNext").addEventListener("click", AddContact, false);

function AddContact(){
    var bemail = document.getElementsByName('INVOICEEMAIL')[0].value;
    var btitle = document.getElementsByName('INVOICESALUTATION')[0].value;
    var bfirstname = document.getElementsByName('INVOICEFIRSTNAME')[0].value;
    var blastname = document.getElementsByName('INVOICELASTNAME')[0].value;
    var baddressline1 = document.getElementsByName('INVOICEADDRESS1')[0].value;
    var baddressline2 = document.getElementsByName('INVOICEADDRESS2')[0].value;
    var bcity = document.getElementsByName('INVOICEADDRESS3')[0].value;
    var bstate = document.getElementsByName('INVOICEADDRESS4')[0].value;
    var bmobile = document.getElementsByName('INVOICEMOBILE')[0].value;
    var bhome = document.getElementsByName('INVOICEPHONE')[0].value;
    var bcompany = document.getElementsByName('INVOICECOMPANY')[0].value;
    var bcountry = document.getElementsByName('LocationInvoiceCountry')[0].value;
    var bpostcode = document.getElementsByName('INVOICEPOSTALCODE')[0].value;

if (document.getElementById('idINVOICEPRIVACY').checked == false)
    {
        document.writeln('<img src="https://app.bronto.com/public/?q=direct_add&fn=Public_DirectAddForm&id=XXXXXXXX&email='+bemail+'&field1=title,set,'+btitle+'&field2=firstname,set,'+bfirstname+'&field3=lastname,set,'+blastname+'&field4=addressline1,set,'+baddressline1+'&field5=addressline2,set,'+baddressline2+'&field6=city,set,'+bcity+'&field7=county,set,'+bstate+'&field8=country,set,'+bcountry+'&field9=mobile,set,'+bmobile+'&field10=home,set,'+bhome+'&field11=company,set,'+bcompany+'&field12=postcode,set,'+bpostcode+'&field13=ItemsInCart,set,0&field14=Item1ImageURL,set,&field15=Item1Name,set,&field16=Item1URL,set,&list17=0bbf03ec0000000000000000000000f59720&list18=0bbf03ec0000000000000000000000f59809&createCookie=1" width="0" height="0" border="0" alt=""/>');
    return true;
    }

else if (document.getElementById('idINVOICEPRIVACY').checked == true)
    {
        document.writeln('<img src="https://app.bronto.com/public/?q=direct_add&fn=Public_DirectAddForm&id=XXXXXX&email='+bemail+'&field1=title,set,'+btitle+'&field2=firstname,set,'+bfirstname+'&field3=lastname,set,'+blastname+'&field4=addressline1,set,'+baddressline1+'&field5=addressline2,set,'+baddressline2+'&field6=city,set,'+bcity+'&field7=county,set,'+bstate+'&field8=country,set,'+bcountry+'&field9=mobile,set,'+bmobile+'&field10=home,set,'+bhome+'&field11=company,set,'+bcompany+'&field12=postcode,set,'+bpostcode+'&field13=ItemsInCart,set,0&field14=Item1ImageURL,set,&field15=Item1Name,set,&field16=Item1URL,set,&transactional=1&createCookie=1" width="0" height="0" border="0" alt=""/>');
    return true;
    }   
}

我认为这种行为是由您想如何将 HTML 元素写入页面的方式引起的。对于您的提议,我认为我有更好的方法:

所以第一个改变是添加一个不可见的img emelent:

<img src="" id="hiddenImg" width="1" height="1" border="0" alt="" style="visibility:hidden">
<!-- You can also use display:none; -->

第二个是改变你的Javascript:

function AddContact()
{
    ... lines skipped ...

    var targetUrlStr = "";
    if (document.getElementById('idINVOICEPRIVACY').checked == false)
    {
     targetUrlStr = 'https://app.bronto.com/public/<url cut here>';
    } else if (document.getElementById('idINVOICEPRIVACY').checked == true) {
     targetUrlStr = 'https://app.bronto.com/public/<url cut here>';
    }
    document.getElementById("hiddenImg").src = targetUrlStr;
    return true;
 }

希望对您有所帮助。