如何在页面加载后触发Javascript函数?

如何在页面加载后触发Javascript函数?

问题描述:

**编辑**如何在页面加载后触发Javascript函数?

恐怕我不是在正确的方向 - 问题不是我问的。 Javascript的工作原理应该是这样的,它是在第一次“运行”时不显示我想要的 的PHP - 而且我不知道为什么。 对不起,有点浪费你的时间......

**

我有可能会或可能尚未包含在其字段中的数据的形式。 如果用户到达表单并且他已经在系统中有一些数据,例如他的ID号码将出现在ID字段中 - 并且运行onLoad的JavaScript函数将禁用输入字段并更改其样式:

<body onload="runFunction()"> 

的问题是,它似乎运行PHP做它的一部分, 前,只有当我刷新页面,则JS函数做的一切,我希望它 (它禁用和风格的一些其他形式的字段取决于PHP条件)。

有没有办法让这个JS函数在页面呈现后运行? 我试着关闭页面之前运行以下命令:

<body> 
... 
... 
<script> 
runFunction(); 
</script> 
</body> 
</html> 

,但无济于事。

有什么想法? 谢谢!

一些相关的PHP代码的:我删除ID属性,使阅读更容易]

<?php if ($h_phone != '' && $h_phone_pre != '') { 
echo "<td class=\"input\"><input type=\"text\" id=\"new_user_home_tel\" value=\"$h_phone\" size=\"8\" maxlength=\"7\" disabled=\"disabled\" /> - 
<select id=\"new_user_home_tel_pre\" disabled=\"disabled\"> 
    <option value=\"$h_phone_pre\" selected=\"selected\"></option>"; 

    } else { 

echo '<td class="input"><input type="text" id="new_user_home_tel" size="8" maxlength="7" /> - 
<select id="new_user_home_tel_pre"> 
    <option value=" " selected="selected"></option>'; 
    }?> <option value="02">02</option> 
    <option value="03">03</option> 
    <option value="04">04</option> 
    <option value="08">08</option> 
    <option value="09">09</option> 
</select> 
</td> 

Javascript代码只是改变如果该字段不为空的风格和作品, 但PHP只有刷新后才能工作。

+0

表单区域中是否有单独的代码?如果是这样,我们可以请你看看你的表单输入样本,包括PHP? – 2009-05-24 21:01:31

+0

@Fran - 我添加了一些PHP代码,我希望这是可以理解的。 – 2009-05-25 12:51:16

恐怕我不是在正确的方向 - 问题不是我所问的。 Javascript的工作原理应该是这样的,即PHP在第一次“运行”时不显示我想要的内容 - 而且我不知道为什么。对不起有点浪费你的时间...

您的Javascript在页面加载后运行,问题在别处。

它必须是你的服务器刷新前后发送不同的HTML。我建议如果你保存第一次获得的页面源,并将其与刷新后的源代码进行比较。我敢打赌,你会发现差异,那会告诉你什么是错的。

+0

我试过--HTML是相同的... – 2009-05-24 15:31:21

+0

它是否重现,如果您保存本地HTML并从本地机器打开? – 2009-05-24 15:48:46

+0

@ buti-oxa:是的。 – 2009-05-24 16:10:12

JQuery执行此操作。一旦页面呈现,以下内容将执行:

$(document).ready(function() { 
    //Call your function here 
}); 

尝试“延迟”属性。

一种方法是在PHP中输出缓冲页面。这意味着生成的所有内容都会进入内存,直到脚本完成运行,然后将其全部发送出去。

看看http://uk.php.net/ob_start

非JS库的回答是:

<script> 
window.onload = function(){ 
/* do stuff */ 
} 
</script> 

但是使用JS库如jQuery将采取的所有那些挑剔的跨浏览器的bug /问题护理。

您有权将<script>块放在您身体的尽头。当浏览器遇到<script>块时,这会提高页面加载性能。

绝对是不好意思,但你总是可以在窗体下面放置一个2x2透明图像,并使用它的onLoad运行函数。我在一个有条件包含的文件上做了类似的事情,所以在没有包含文件的情况下没有错误。

我建议你将你的内容添加到输出变量,而不是在文件末尾回显它。例如:

... 
$output .= '<body onload="runFunction();">'; 
while(...) 
{ 
    $output .= '...'; 
} 
$output .= '</body>'; 
... 
echo $output; 

我知道这是真的很晚这篇文章,但这不工作的原因是,PHP呈现HTML,然后你不能再与它互动(除非你可以做一些时髦的AJAX的东西)。要点是JS工作正常bc它是客户端,PHP不工作BC它是服务器端。希望能帮助来到这里的其他人!