La función Javascript no obtiene el nombre de usuario de Windows

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;
}

Estoy tratando de hacer que el marco cargue el urlToSite

<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>

En realidad, ahora solo obtengo una página en blanco. Si visito el mismo sitio en IE y escribo manualmente el nombre de usuario (las mayúsculas y minúsculas no distinguen), la página se carga en IE. Por lo tanto, creo que es algo en el código que es el problema


<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>

preguntado el 12 de junio de 12 a las 17:06

¿Tienes más información? es decir, ¿qué error está recibiendo? -

No hay error. No pasa nada. Solo una pantalla blanca en blanco -

El problema básico parece ser body y frameset en la misma página, lo cual no está permitido. -

@Teemu eso funcionó. ¡Ponlo como una solución (respuesta) para que puedas ganar reputación! -

2 Respuestas

Aunque anidado frameset in body no está permitido, en los "viejos tiempos" body elemento fue incluido después frameset para aquellos navegadores que no admitían marcos. Esto aún funciona en el modo Estándar IE9, pero no puede ver los marcos.

Ejecutar getWindowsUserName() después de que se haya cargado la página, puede hacer algo como esto:

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

o tal vez moverse getWindowsUserName() a topo1.htm.

Más información de frameset en MSDN

Respondido el 12 de junio de 12 a las 19:06

Un par de problemas:

  • JavaScript utiliza + para concatenación, no &
  • Los nombres de propiedad distinguen entre mayúsculas y minúsculas. Tratar WinNetwork.UserName
  • Estás intentando configurar el src atributo de la ventana del marco, que no existe. Debe configurar el src del objeto DOM del marco. Es decir, window.frames devuelve un objeto Ventana y document.getElementById('') devuelve una referencia a HTMLFrameElement
  • (De Teemu) No puedes tener un conjunto de marcos y una etiqueta de cuerpo en la misma página.

Código

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


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

Referencia http://www.pctools.com/guides/scripting/detail/108/?act=reference

Respondido el 12 de junio de 12 a las 18:06

Gracias por las correcciones de código, pero el marco no cargará la página. ¡Es una página en blanco! - Dev del cacao

¿Intentó depurar cuál es el valor en urlToSite ¿es? - Juan mendes

Sí, lo hice. urlTOSite es correcto. Puedo copiarlo y pegarlo en IE y se cargará - Dev del cacao

Tiene una identificación, no un nombre, así que en lugar de marcos []; document.getElementById("psyncLink").src = urlToSite; - Alex K.

¿Qué haces editando JS si no sabes examinar el valor de una variable? Perdón por el sarcasmo... La forma más sencilla es alert(urlToSite); - Juan mendes

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.