2017-05-23 21 views
0

私はXMLデータを取得するロスタページを含むプロジェクトWebサイトを持っています。これはすべてのブラウザで問題なく動作していましたが、今はChromeでしか動作しません。 IE11では、importXML関数は、ページに表示されるように機能していないように見えます。Internet Explorer 11でのimportXML

誰か助けてもらえますか?私は検索で何かを見つけることができませんでした。 rosterHandler.js:

IEでコンソールを使用し
<tr align="left" valign="top"> 
    <td width="32" height="108" valign="top" bgcolor="#D6D6EB"><!--DWLayoutEmptyCell-->&nbsp;</td> 
    <!-- InstanceBeginEditable name="pagetext" --> 
    <td colspan="2" valign="top" bgcolor="#D6D6EB" id="top"> 
    <div id="content"> 
    <div id="rosterTabBar"> 
     <ul id="tabs"> 
      <li id="full"><a href="javascript:void(createRoster())">full roster</a></li> 
      <!--<li id="byprot"><a href="javascript:void(rosterByProtocol())">by protocol</a></li>--> 
      <li id="bysite"><a href="javascript:void(rosterBySite())">by institution</a></li> 
     </ul> 
    </div> 
    <h2>Roster</h2> 
     <form id="rosterForm" name="rosterForm" action="" onsubmit="filteredRoster(document.forms.rosterForm.field.options[document.forms.rosterForm.field.selectedIndex].value,document.forms.rosterForm.query.value);return false;"> 
      <input id="query" name="lname" type="text" size="16" maxlength="128" /> 
      <select id="field" name="field"> 
       <option value="all">All Fields</option> 
       <option value="name">Name</option> 
       <option value="role">Study Role</option> 
       <option value="company">Institution</option> 
       <option value="dept">Department</option> 
       <option value="address">Address</option> 
       <option value="number">Phone/Fax</option> 
       <option value="email">Email</option> 
      </select> 
      <input type="button" value="Search" onclick="filteredRoster(document.forms.rosterForm.field.options[document.forms.rosterForm.field.selectedIndex].value,document.forms.rosterForm.query.value)" /> 
      &nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:void(this.print())"><img style="border:none;" src="../../images/printer.gif" alt="Print" /> Print</a> 
     </form> 
     <a href="javascript:void(expandRoster())">expand all</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="javascript:void(collapseRoster())">collapse all</a><br /> 
     <br /> 
     <div id="listRoot"> 
     </div> 
     <div id="rosterRoot"> 
     </div> 


     <script type="text/javascript" language="javascript"> 
     <!-- 
      importXML('roster.xml','storeRoster'); 
     //--> 
     </script> 
    </div> 
    </td> 
    <!-- InstanceEndEditable --> 

The roster doesn't appear here, where it should appear.

、私はこのエラーを取得しています:

SCRIPT5007:未定義またはnull参照 ファイルのプロパティを取得できません 'にdocumentElement' 、ライン:39、カラム:2

そして、これはrosterHandler.jsで部分です:

function storeRoster(xmlDoc) { 
       if(xmlDoc.documentElement && xmlDoc.documentElement.tagName && xmlDoc.documentElement.tagName.toUpperCase() == 'HTML') { 
           setTimeout('//alert(\'For no apparent reason, your browser has turned the clean XML into HTML based garbage.\\nScript aborted.\');',50); return; } 

       rosterStore = xmlDoc; 
       var x = xmlDoc.getElementsByTagName('member'); 

       for(var i = 0;i< x.length;i++) { 
           if(x[i].getElementsByTagName('firstname')[0].firstChild || x[i].getElementsByTagName('lastname')[0].firstChild) { 
               rosterEntries[i] = new RosterEntry(x[i]); 
           } 
       } 

IMPORTXML:

// JavaScript Document 
var MWJ_ldD = []; 
function importXML(oURL, oFunct, oNoRand, oDelay) { 
       //alert('making xml'); 
       //note: in XML importing event handlers, 'this' refers to window 
       if(!oNoRand) { oURL += ((oURL.indexOf('?') + 1) ? '&' : '?') + (new Date()).getTime(); } //prevent cache 
       if(window.XMLHttpRequest) { 
           //alternate XMLHTTP request - Gecko, Safari 1.2+ and Opera 7.6+ 
           MWJ_ldD[MWJ_ldD.length] = new XMLHttpRequest(); 
           MWJ_ldD[MWJ_ldD.length-1].onreadystatechange = new Function('if(MWJ_ldD['+(MWJ_ldD.length-1)+'].readyState == 4 && MWJ_ldD['+(MWJ_ldD.length-1)+'].status < 300) { '+oFunct+'(MWJ_ldD['+(MWJ_ldD.length-1)+'].responseXML); }'); 
           MWJ_ldD[MWJ_ldD.length-1].open("GET", oURL, true); 
           MWJ_ldD[MWJ_ldD.length-1].send(null); 
           return true; 
       } 
       if(!navigator.__ice_version && window.ActiveXObject) { 
           //the Microsoft way - IE 5+/Win (ICE produces errors and fails to use try-catch correctly) 
           try { //IE Mac has the property window.ActiveXObject but produces errors if you try and use it 
               try { var tho = new ActiveXObject('Microsoft.XMLDOM'); //newer 
               } catch(e) { var tho = new ActiveXObject('Msxml2.XMLHTTP'); } //older 
               MWJ_ldD[MWJ_ldD.length] = tho; 
               MWJ_ldD[MWJ_ldD.length-1].onreadystatechange = new Function('if(MWJ_ldD['+(MWJ_ldD.length-1)+'].readyState == 4) { '+oFunct+'(MWJ_ldD['+(MWJ_ldD.length-1)+']); }'); 
               MWJ_ldD[MWJ_ldD.length-1].load(oURL); 
               return true; 
           } catch(e) {} 
       } 
       if(document.createElement && document.childNodes) { 
           //load the XML in an iframe 
           var ifr = document.createElement('DIV'); 
           ifr.style.visibility = 'hidden'; ifr.style.position = 'absolute'; ifr.style.top = '0px'; ifr.style.left = '0px'; 
           //onload only fires in Opera so I use a timer for all 
           if(!window.MWJ_XML_timer) { window.MWJ_XML_timer = window.setInterval('MWJ_checkXMLLoad();',100); } 
           ifr.innerHTML = '<iframe src="'+oURL+'" name="MWJ_XML_loader_'+MWJ_ldD.length+'" height="0" width="0"><\/iframe>'; 
           MWJ_ldD[MWJ_ldD.length] = oFunct+'MWJ_SPLIT'+(oDelay?oDelay:1)+''; 
           document.body.appendChild(ifr); 
           return true; 
       } 
       return false; 
} 
function MWJ_checkXMLLoad() { 
       //check if each imported file is available (huge files may not have loaded completely - nothing I can do - use the delay to help) 
       for(var x = 0; x < MWJ_ldD.length; x++) { if(MWJ_ldD[x] && window.frames['MWJ_XML_loader_'+x]) { 
           setTimeout(MWJ_ldD[x].split('MWJ_SPLIT')[0] + '(window.frames.MWJ_XML_loader_'+x+'.window.document);', parseInt(MWJ_ldD[x].split('MWJ_SPLIT')[1])); 
           MWJ_ldD[x] = false; 
       } } 
} 
+0

コンソール出力はありますか? IEの開発者ツールをチェックし、ログの出力を探します。あなたの投稿を編集してそれを含むようにしてください。 –

+0

ありがとう!投稿編集 – RNelson

答えて

0

xmlDocが未定義であるかのように思えます。 importXML関数は、パラメータをstoreRoster関数に渡していないようです。 importXMLの機能はどのように見えますか?私はあなたをさらに助けようとします。

また、roster.xmlはどこにありますか?

+0

xml_import.jsというファイル内のimportxml関数が投稿に追加されました。 roster.xmlについては、roster.htmと同じディレクトリにあります。 – RNelson

+0

Jeff、これを理解する手助けができますか?再度、感謝します。 – RNelson

+0

申し訳ありません私はできるだけあなたを助けようとします。私は今日非常に忙しいですが、その間に時間を見つけることを試みます:)あなたのスクリプトはここにありますか? http://www.howtocreate.co.uk/jslibs/importxml.js私は上の指示を読んで、彼らは機能の遅延を渡さなければならないかもしれないと述べています。 'importXML( 'roster.xml'、 'storeRoster'、false、2000);'を試してみてください。 –