【发布时间】:2012-10-27 01:50:58
【问题描述】:
发生了一些奇怪的事情,但我似乎无法让 JavaScript 代码 document.getElementById 在 PHP 内部工作...
例如,将以下 PHP 代码(如下)加载到 PHP 文件中并运行它,有没有 JavaScript 警报?但是,如果您复制 PHP 回显(或打印)的源代码并将其作为 HTML 文件运行,是否会出现 JavaScript 警报?因此,在 PHP 标记内创建的任何元素都不会在 JavaScript 中运行,即使 JavaScript 保留在 PHP 标记之外?
这是 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>
";
?>
如果这只是你的代码,它甚至不起作用:
<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>
这是显示的源代码(根据要求)(contentWindow.onLoad 也适用于与我在 Safari 中不在同一域中的内容):
<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>
我的问题是,在 HTML 中这段代码可以正常工作并且会调用警报....在 PHP 中代码不起作用并且永远不会调用警报...PHP 处理 document.getElementById 的方式有问题,.contentWindow.onload没有错。
【问题讨论】:
-
“所以在 PHP 标记内创建的任何元素都不会在 javascript 中运行,即使 javascript 保留在 php 标记之外?” - 浏览器不会'不知道也不关心响应的哪一部分是在
<?php标签中动态生成的,哪一部分是静态的。 “但是如果你复制 php 回显的源代码” - 你能告诉我们从浏览器的“查看页面源代码”选项中看到的确切回显的内容吗?
标签: php javascript iframe document getelementbyid