JavaScript仅适用于Chrome

JavaScript仅适用于Chrome,javascript,php,google-chrome,browser,Javascript,Php,Google Chrome,Browser,下面的代码只适用于google chrome,如果我尝试使用任何其他浏览器,它都不会工作。我怀疑这与我发送给php的数据类型有关。然而,我并不完全确定 指向代码宿主位置的链接: 代码: PHP Javascript/HTML #CharacterLabel{右边距:110px} #ActionLabel{右边距:125px} #NUMOFDICE标签{右边距:60px} #SidesLabel{右边距:20px} 人物: 行动: 骰子数量: 边: 奖金: d3 d4 d6 d8 d10

下面的代码只适用于google chrome,如果我尝试使用任何其他浏览器,它都不会工作。我怀疑这与我发送给php的数据类型有关。然而,我并不完全确定

指向代码宿主位置的链接:

代码:

PHP

Javascript/HTML


#CharacterLabel{右边距:110px}
#ActionLabel{右边距:125px}
#NUMOFDICE标签{右边距:60px}
#SidesLabel{右边距:20px}
人物:
行动:
骰子数量:
边:
奖金:

d3 d4 d6 d8 d10 d12 d20 d100

掷骰子

信息: 函数getXMLHttpRequestObject(){ var ajaxWork=null; if(window.XMLHttpRequest){ ajaxWork=newXMLHttpRequest(); } else if(window.ActiveXObject){ ajaxWork=newActiveXObject('MSXML2.XMLHTTP.3.0'); } 返回工作; } 函数callAjax(ajaxWork) { ajaxWork.open('GET','http://coldrepublic.com/log.txt",对),; ajaxWork.send(空) } 函数写日志(toLog) { var data=new FormData(); 数据。附加(“数据”,toLog); var xhr=getXMLHttpRequestObject(); xhr.open('POST','http://coldrepublic.com/writeToLog.php",对),; 发送(数据); } 函数myFunction(){ var ajaxWork=getXMLHttpRequestObject(); ajaxWork.onreadystatechange=函数(){ if(ajaxWork.readyState==4){ 如果((ajaxWork.status>=200&&ajaxWork.status<300) ||(ajaxWork.status==304)){ document.getElementById('OutputBox')。value=ajaxWork.responseText; } 否则{ document.getElementById('ErrorLog').innerHTML=“消息:错误!未正确读取文件”; } } } callAjax(ajaxWork); } 函数rollDice(){ var character=document.getElementById(“CharacterInput”).value; var action=document.getElementById(“ActionInput”).value; var sides=parseInt(document.getElementById(“sides”).value); var=”; var toLog=“”; var OutputBox=document.getElementById('OutputBox'); document.getElementById('ErrorLog')。innerHTML='Message:'; var bonusBlank=document.getElementById(“BonusInput”).value; 如果(字符==null | |字符==“”,操作==null | |操作==“”) { document.getElementById('ErrorLog')。innerHTML='Message:Error!必须为字符或操作输入值'; } 其他的 { if(isInt(parseInt(document.getElementById(“NumDice”).value))和&isInt(parseInt(document.getElementById(“BonusInput”).value))) { var numDice=parseInt(document.getElementById(“numDice”).value); var bonus=document.getElementById(“BonusInput”).value; 对于(i=0;i
我没有太多关注您的代码的功能,但我想我知道问题所在,如果我的解决方案是正确的,我将对您的代码添加一些其他想法

您的代码在Chrome中工作,因为Chrome比任何其他浏览器都快,并且它能够在调用页面重新加载之前执行xhr调用(实际上,这只是一个幸运,它在Chrome中工作,在某些机器上,结果可能不同,因此它可能在其他浏览器中工作,或者根本不工作)。要使其在任何其他浏览器中工作,您需要将回调添加到xhr调用中,并执行
location.reload()内部回调

不要忘记删除
location.reload()
滚动骰子中的其他位置

        toLog = character + " " + action + " " + diceRolls + " Bonus: " + bonus + " Timestamp: " + dateTemp + "\n" ;
        writeToLog(toLog);
    }
编辑:
既然主要问题已经解决了,这里就没有其他的建议了

character==null

这些值来自输入,输入存储字符串,所以它们永远不会是空值,只有
character==“”
应该足够了

你在这里干什么

if(character==null | | character==”,action==null | | action==”)

是错误的,您使用逗号运算符而不是ju
function writeToLog(toLog)
{
    var data = new FormData();
    data.append("data",toLog);

    var xhr = getXMLHttpRequestObject();
    xhr.open( 'POST', 'http://coldrepublic.com/writeToLog.php', true );

    xhr.onload = function (e) {
      if (xhr.readyState === 4) {
        if (xhr.status === 200) {
          console.log('ok');
          location.reload();
        } else {
          console.error('problem');
        }
      }
    };

    xhr.send(data);
}
        toLog = character + " " + action + " " + diceRolls + " Bonus: " + bonus + " Timestamp: " + dateTemp + "\n" ;
        writeToLog(toLog);
    }
function isInt(value) {
  return !isNaN(value) && 
     parseInt(Number(value)) == value && 
     !isNaN(parseInt(value, 10));
}
var numdice = document.getElementById("NumDice").value; 
if (numdice == parseInt(numdice)...