Firefox和IE没有显示PHP提供的“<script ... =”“> ... </script>”

时间:2010-06-25 22:51:10

标签: php firefox internet-explorer

嘿大家,我正在尝试建立一个网站的问题;基本上我有一个类,我从我的头文件调用,加载所有链接和脚本标记。链接标记显示在所有浏览器中,但脚本标记仅显示在safari和chrome中,它们不会显示在firefox或IE中。

<script type='text/javascript' src='...'>  

现在我尝试删除“&lt;”在标签的前面只是为了看看会发生什么,然后它会显示为纯文本,但是只要我把“&lt;”回来它又是MIA。

所以这是php中正在发生的事情。我的 header.php 文件调用位于 cms.php 中的cms对象函数,这些函数调用我的 system.php 文件中的其他函数。

现在,链接标签再次起作用,我用同样的方式调用它们......它只是愚蠢的脚本标签。当我调用load_js(“config”)时;我的header.php中的函数也会加载多个标签。如果它只是1个标签,我会把脚本标签放在html中,而不是放在php中,但是当我生成多个标签时,我认为我不能这样做。

任何帮助都会很棒!也要提前感谢!

的header.php

<?php echo $this->load_css("config"); ?>  
<?php echo $this->load_js("config"); ?> 

cms.php

function load_js($name){        
    // ...
    return header_script($name.".js");
    // ...
}
function load_css($name){       
    // ...
    return header_link($name.".css");
    // ...
} 

system.php

function header_script(){
    // 0 = src
    $num = func_num_args();
    if($num == 0){
        return;// if no arguments, can't successfully build header_script.
    }
    if($num == 1){
        return "<script type='application/javascript' src='".func_get_arg(0)."'></script>\n";
    }
}
function header_link(){
    $num = func_num_args();
    // 0 = rel
    // 1 = type
    // 2 = href
    if($num < 3){
        return; // can't successfully build link.
    }
    if($num == 3){
        return "<link rel='".func_get_arg(0)."' type ='".func_get_arg(1)."' href='".func_get_arg(2)."' />\n";
    }
}

1 个答案:

答案 0 :(得分:2)

首先,某些浏览器无法识别application/javascript。您应该将其更改为text/javascript

其次,正如评论(Justin Johnson)中所提到的,您应该使用默认值在函数定义中使用参数:

function header_script($name = '')
{
    if ($name != '') {
        return '<script type="text/javascript" src="'.$name.'"</script>';
    }
}