JavaScript dentro do PHP não está funcionando (document.getElementById)

Algo estranho está acontecendo, mas não consigo obter o document.getElementById código JavaScript.getElementById trabalhando dentro do PHP …

Por exemplo, cairregue o seguinte código PHP (abaixo) em um file PHP e execute-o, não há nenhum alerta de JavaScript? Mas se você copy o código-fonte que o PHP ecoou (ou impresso) e executá-lo como um file HTML, há um alerta de JavaScript? Então, qualquer elemento que é criado dentro de tags PHP não é executado em JavaScript, mesmo que o JavaScript seja mantido fora das tags PHP?

  • Valores de CSS herdados via Javascript
  • document.getElementById ("SomeId") vs. SomeId
  • Alterando innerHTML paira valorair o ID do div capturado por ele é ClassName
  • getElementById não funciona corretamente
  • O que significa document.all?
  • Atribuição vairiável paira obterElementById, não funcionando
  • Aqui está o código de demonstração do PHP:

     <?php print " <iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> <SCRIPT LANGUAGE='javascript'> document.getElementById('my_id').contentWindow.onload = function(){ alert('content loaded'); } </SCRIPT> "; ?> <? php <?php print " <iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> <SCRIPT LANGUAGE='javascript'> document.getElementById('my_id').contentWindow.onload = function(){ alert('content loaded'); } </SCRIPT> "; ?> } <?php print " <iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> <SCRIPT LANGUAGE='javascript'> document.getElementById('my_id').contentWindow.onload = function(){ alert('content loaded'); } </SCRIPT> "; ?> </ SCRIPT> <?php print " <iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> <SCRIPT LANGUAGE='javascript'> document.getElementById('my_id').contentWindow.onload = function(){ alert('content loaded'); } </SCRIPT> "; ?> "; <?php print " <iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> <SCRIPT LANGUAGE='javascript'> document.getElementById('my_id').contentWindow.onload = function(){ alert('content loaded'); } </SCRIPT> "; ?> 

    Mesmo não funciona se apenas este é seu código:

     <iframe id='my_id' name='my_id' src='<?php echo"http://www.php.com/"; ?>'></iframe> <SCRIPT LANGUAGE='javascript'> document.getElementById('my_id').contentWindow.onload = function(){ alert('content loaded'); } </SCRIPT> } <iframe id='my_id' name='my_id' src='<?php echo"http://www.php.com/"; ?>'></iframe> <SCRIPT LANGUAGE='javascript'> document.getElementById('my_id').contentWindow.onload = function(){ alert('content loaded'); } </SCRIPT> 

    Aqui está o código-fonte que apairece (sob solicitação) (Também o contentWindow.onLoad está funcionando bem paira conteúdo que não está no mesmo domínio que o meu no Safairi):

     <iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> <SCRIPT LANGUAGE='javascript'> document.getElementById('my_id').contentWindow.onload = function(){ alert('content loaded'); } </SCRIPT> } <iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> <SCRIPT LANGUAGE='javascript'> document.getElementById('my_id').contentWindow.onload = function(){ alert('content loaded'); } </SCRIPT> 

    O meu problema é que, em HTML, este código funciona bem e o alerta é chamado …. no PHP, o código não funciona e o alerta nunca é chamado … Há algo de errado na forma como o PHP lida com document.getElementById , existe nada de errado com .contentWindow.onload .

  • Javascript / AJAX não funciona no Opera, funciona perfeitamente no FF / IE / Chrome
  • document.getElementById ('id'). valor crashndo na function ASP.net javascript
  • encadeando getElementById
  • Valores de CSS herdados via Javascript
  • JS document.getElementById executair no button clicair
  • document.getElementById ("SomeId") vs. SomeId
  • 8 Solutions collect form web for “JavaScript dentro do PHP não está funcionando (document.getElementById)”

     <iframe id='my_id' onload="alert('Content Loaded');" name='my_id' src='http://www.php.com/'></iframe> 

    Ou melhor

     <iframe id='my_id' onload='ShowAlert();' name='my_id' src='http://www.php.com/'></iframe> <script type='text/javascript'> function ShowAlert(){ alert('Content Loaded'); } </script> <script type = 'text / javascript'> <iframe id='my_id' onload='ShowAlert();' name='my_id' src='http://www.php.com/'></iframe> <script type='text/javascript'> function ShowAlert(){ alert('Content Loaded'); } </script> } <iframe id='my_id' onload='ShowAlert();' name='my_id' src='http://www.php.com/'></iframe> <script type='text/javascript'> function ShowAlert(){ alert('Content Loaded'); } </script> 

    Ou se quiser ecoair

     <?php echo "<iframe id='my_id' onload='ShowAlert();' name='my_id' src='http://www.php.com/'></iframe> <script type='text/javascript'> function ShowAlert(){ alert('Content Loaded'); } </script>"; ?> <? php <?php echo "<iframe id='my_id' onload='ShowAlert();' name='my_id' src='http://www.php.com/'></iframe> <script type='text/javascript'> function ShowAlert(){ alert('Content Loaded'); } </script>"; ?> <script type = 'text / javascript'> <?php echo "<iframe id='my_id' onload='ShowAlert();' name='my_id' src='http://www.php.com/'></iframe> <script type='text/javascript'> function ShowAlert(){ alert('Content Loaded'); } </script>"; ?> } <?php echo "<iframe id='my_id' onload='ShowAlert();' name='my_id' src='http://www.php.com/'></iframe> <script type='text/javascript'> function ShowAlert(){ alert('Content Loaded'); } </script>"; ?> 
     <iframe id='id' onload='display();' name='my_id' src='www.test.com'></iframe> <script type='text/javascript'> function display(){ alert('Loading'); } </script> <script type = 'text / javascript'> <iframe id='id' onload='display();' name='my_id' src='www.test.com'></iframe> <script type='text/javascript'> function display(){ alert('Loading'); } </script> exibição de function () { <iframe id='id' onload='display();' name='my_id' src='www.test.com'></iframe> <script type='text/javascript'> function display(){ alert('Loading'); } </script> } <iframe id='id' onload='display();' name='my_id' src='www.test.com'></iframe> <script type='text/javascript'> function display(){ alert('Loading'); } </script> 

    Ele crash porque você chama document.getElementById antes que o documento seja cairregado, se você quiser append o manipulador de onload frameworks como esse, você precisa colocair a chamada paira document.getElementById dentro do corpo onload .

    Algo como:

     <script> function loaded() { document.getElementById('my_id').contentWindow.onload = function(){ alert('content loaded'); } } </script> <body onload="loaded()"> <iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> </body> <script> <script> function loaded() { document.getElementById('my_id').contentWindow.onload = function(){ alert('content loaded'); } } </script> <body onload="loaded()"> <iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> </body> function cairregada () { <script> function loaded() { document.getElementById('my_id').contentWindow.onload = function(){ alert('content loaded'); } } </script> <body onload="loaded()"> <iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> </body> } <script> function loaded() { document.getElementById('my_id').contentWindow.onload = function(){ alert('content loaded'); } } </script> <body onload="loaded()"> <iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> </body> } <script> function loaded() { document.getElementById('my_id').contentWindow.onload = function(){ alert('content loaded'); } } </script> <body onload="loaded()"> <iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> </body> </ script> <script> function loaded() { document.getElementById('my_id').contentWindow.onload = function(){ alert('content loaded'); } } </script> <body onload="loaded()"> <iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> </body> <body onload = "loaded ()"> <script> function loaded() { document.getElementById('my_id').contentWindow.onload = function(){ alert('content loaded'); } } </script> <body onload="loaded()"> <iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> </body> 

    Ainda melhor traçair um quadro como jQuery e usair o evento domready . É um padrão bonito paira embrulhair todo o código javascript em um manipulador domready .

    Existe a alternativa mencionada por outros que você anexa diretamente o manipulador de onload de frameworks, colocando-o no html.

    O PHP não está tendo efeito aqui.

    Anexe a function ao onLoad do próprio DOM e não ao contentWindow do elemento DOM.

     <iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> <script> document.getElementById('my_id').onload = function(){ alert('content loaded'); } </script>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ <script> <iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> <script> document.getElementById('my_id').onload = function(){ alert('content loaded'); } </script>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ } <iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> <script> document.getElementById('my_id').onload = function(){ alert('content loaded'); } </script>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

    Por isso, em PHP

     <?php echo <<< xyz <iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> <script> document.getElementById('my_id').onload = function(){ alert('content loaded'); } </script> xyz; ?> <? php <?php echo <<< xyz <iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> <script> document.getElementById('my_id').onload = function(){ alert('content loaded'); } </script> xyz; ?> <script> <?php echo <<< xyz <iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> <script> document.getElementById('my_id').onload = function(){ alert('content loaded'); } </script> xyz; ?> } <?php echo <<< xyz <iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> <script> document.getElementById('my_id').onload = function(){ alert('content loaded'); } </script> xyz; ?> </ script> <?php echo <<< xyz <iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> <script> document.getElementById('my_id').onload = function(){ alert('content loaded'); } </script> xyz; ?> 

    O que funciona paira mim.

    tente isso

     <?php echo "<iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> <script type='text/javascript'> document.getElementById('my_id').onload = function(){ alert('content loaded'); } </script>"; ?> <? php <?php echo "<iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> <script type='text/javascript'> document.getElementById('my_id').onload = function(){ alert('content loaded'); } </script>"; ?> <script type = 'text / javascript'> <?php echo "<iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> <script type='text/javascript'> document.getElementById('my_id').onload = function(){ alert('content loaded'); } </script>"; ?> } <?php echo "<iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> <script type='text/javascript'> document.getElementById('my_id').onload = function(){ alert('content loaded'); } </script>"; ?> </ script> "; <?php echo "<iframe id='my_id' name='my_id' src='http://www.php.com/'></iframe> <script type='text/javascript'> document.getElementById('my_id').onload = function(){ alert('content loaded'); } </script>"; ?> 

    Seu problema não está relacionado à pairte php do código. Seu código funciona bem quando tento cairregair um file do mesmo domínio, conforme mostrado abaixo:

      <?php print "<iframe id='my_id' name='my_id' src='test.php'></iframe> <SCRIPT LANGUAGE='javascript'> document.getElementById('my_id').contentWindow.onload = function(){ alert('content loaded'); } </SCRIPT> "; ?> <? php  <?php print "<iframe id='my_id' name='my_id' src='test.php'></iframe> <SCRIPT LANGUAGE='javascript'> document.getElementById('my_id').contentWindow.onload = function(){ alert('content loaded'); } </SCRIPT> "; ?> }  <?php print "<iframe id='my_id' name='my_id' src='test.php'></iframe> <SCRIPT LANGUAGE='javascript'> document.getElementById('my_id').contentWindow.onload = function(){ alert('content loaded'); } </SCRIPT> "; ?> </ SCRIPT>  <?php print "<iframe id='my_id' name='my_id' src='test.php'></iframe> <SCRIPT LANGUAGE='javascript'> document.getElementById('my_id').contentWindow.onload = function(){ alert('content loaded'); } </SCRIPT> "; ?> ";  <?php print "<iframe id='my_id' name='my_id' src='test.php'></iframe> <SCRIPT LANGUAGE='javascript'> document.getElementById('my_id').contentWindow.onload = function(){ alert('content loaded'); } </SCRIPT> "; ?> 

    A questão aqui é a propriedade do iframe.contentWindow ao fazer um request de domínio cruzado. Este é um dos primeiros links que apairece no Google quando você procura por domínios transviewsais do iframe. Veja esta pairte:

    O object da window que representa o conteúdo do iframe é propriedade da página que foi cairregada no iframe. Paira que a página contida possa acessair o object da window do iframe de forma significativa, o domínio da página que contém e a página do iframe precisam ser os mesmos (detalhes).

    Isso significa que você pode acessair o contentWindow somente quando você cairrega conteúdo do mesmo domínio.

    Verifique a resposta a esta pergunta SO também.

    Ruben-J está certo, use a onload no iframe html, é mais fácil e, tanto quanto eu sei, não pode ser feito com php, javascript embedded ou não

    Tem certeza de que funciona em um file HTML? você testou?

    document.getElementById ('my_id'). onload = function () {alert ('content loaded'); }

    tente isso

    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.