2012-06-12 2 views
1
function getWindowsUserName() 
{ 
    var WinNetwork = new ActiveXObject("WScript.Network"); 
    var urlToSite = "http://localhost/index.php?nph-psf=0&HOSTID=AD&ALIAS=" + WinNetwork.UserName;  
    window.frames["psyncLink"].src = "http://localhost/index.php?nph-psf=0&HOSTID=AD&ALIAS=" + WinNetwork.UserName; 
    return; 
} 

Я пытаюсь сделать кадр загрузить urlToSiteфункция Javascript не получает имя пользователя Windows

<body onload="getWindowsUserName()"> 
    <frameset cols="300px, *"> 
     <frame src="topo1.htm" name="topo" id="topo" application="yes" /> 
     <frame src="topo1.htm" name="psyncLink" id="psyncLink" application="yes" /> 
    </frameset> 
</body> 

На самом деле сейчас я просто получаю пустую страницу. Если я посещаю один и тот же сайт в IE и вручную набираю имя пользователя (случай не чувствителен), тогда страница загружается в IE. Поэтому я думаю, что это что-то в коде вот этот вопрос


<html> 
    <head> 
    <title>AIDS (Automated ID System)</title> 
    <HTA:APPLICATION 
    id="frames" 
    border="thin" 
    caption="yes" 
    icon="http://www.google.com/favicon.ico" 
    showintaskbar="yes" 
    singleinstance="yes" 
    sysmenu="yes" 
    navigable="yes" 
    contextmenu="no" 
    innerborder="no" 
    scroll="auto" 
    scrollflat="yes" 
    selection="yes" 
    windowstate="normal" /> 

<script language="javascript" type="text/javascript"> 

    function getWindowsUserName() 
    { 
     var WinNetwork = new ActiveXObject("WScript.Network"); 
     var urlToSite = createCustomURL(WinNetwork.UserName); 
     document.getElementById("psyncLink").src = urlToSite; 
    } 

    function createCustomURL(userName) 
    { 
     var customURL = "http://localhost/index.php?nph-psf=0&HOSTID=AD&ALIAS=" + userName; 
     return customURL; 
    } 

</script> 

    </head> 
    <body onload="getWindowsUserName()"> 
     <frameset cols="300px, *"> 
      <frame src="topo1.htm" name="topo" id="topo" application="yes" /> 
      <frame src="topo1.htm" name="psyncLink" id="psyncLink" application="yes" /> 
     </frameset> 
    </body> 
</html> 
+0

У Вас есть дополнительная информация? т.е. Какую ошибку вы получаете? – Jake1164

+0

Ошибка. Ничего не произошло. Просто пустой белый экран –

+1

Основная проблема, кажется, «body» и «frameset» на той же странице, что недопустимо. – Teemu

ответ

1

Хотя вложенная frameset в body не допускается, в "старые дни" body элемент был включен после того, как frameset для тех браузеров, которые не сделали опорные рамы. Это все еще работает в IE9 Standards -mode, но тогда вы не можете видеть фреймы.

Чтобы выполнить getWindowsUserName() после загрузки страницы, вы можете сделать что-то вроде этого:

window.onload=getWindowsUserName; 
</script> 
</head> 
<frameset cols="300,*"> 
    <frame src="" name="topo" ...> 
    <frame src="topo1.htm" name="psyncLink" ...> 
</frameset> 

или, возможно, перейти к getWindowsUserName() topo1.htm.

Более подробная информация о frameset in MSDN

1

несколько проблем:

  • JavaScript использует + для конкатенации, не &
  • имена свойств чувствительны к регистру. Попробуйте WinNetwork.UserName
  • Вы пытаетесь установить атрибут src окна рамки, который не существует. Вам нужно установить src объекта DOM фрейма. То есть, window.frames возвращает объект Window, а document.getElementById('') возвращает ссылку на HTMLFrameElement
  • (From Teemu) У вас не может быть набор фреймов и тег тела на той же странице.

Код

var urlToSite = "http://localhost/index.php?nph-psf=0&HOSTID=AD&ALIAS=" + 
       encodeURIComponent(WinNetwork.UserName); 


document.getElementById("psyncLink").src = urlToSite; 

Ссылкаhttp://www.pctools.com/guides/scripting/detail/108/?act=reference

+0

Спасибо за исправления кода, но кадр не загрузит страницу. Это пустая страница! –

+0

Вы пытались отладить, что такое значение в 'urlToSite'? –

+0

Да, я сделал. urlTOSite верен. Я могу скопировать и вставить его в IE, и он будет загружен. –

Смежные вопросы