【问题标题】:Firefox and IE aren't displaying "<script ... > ... </script>" provided from PHPFirefox 和 IE 不显示 PHP 提供的“<script ... > ... </script>”
【发布时间】:2010-06-25 22:51:10
【问题描述】:

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

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

现在我尝试删除标签前面的“

所以这就是 php.ini 中发生的事情。我的 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";
    }
}

【问题讨论】:

  • 您能否显示在您的浏览器中生成的准确的 HTML 代码,包括完整路径?整个head 部分将是完美的。
  • 从您提供的有限代码来看,您似乎遇到了 header_script 中的 if($num == 0) 情况。还有其他调用该函数的行吗?
  • @allyourcode 为什么? num 是传递给函数的参数数量。他在 header.php 调用中传递了一个参数
  • 这到底是怎么回事?形参是从什么时候跳上鲨鱼的?
  • @Justin 是的,这是非常不正统的。而且很难在 IDE 中查找,这就是我不这样做的原因。

标签: php firefox internet-explorer


【解决方案1】:

首先,某些浏览器无法识别application/javascript。你应该把它改成text/javascript

其次,如 cmets (Justin Johnson) 中所述,您应该在函数定义中使用带有默认值的参数:

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

【讨论】:

  • 属性值周围的单引号实际上是有效的 HTML,根据规范:w3.org/TR/html4/intro/sgmltut.html#h-3.2.2
  • @webbiedave 如果他的问题是实际的脚本标签没有出现在 IE 和 FF 中,则不会。不过,OP 在这方面有点模糊。
  • @Pekka:OP 没有提到 PHP 检查了代理字符串并据此表现不同,我推测无论浏览器如何,都会为每个请求发送相同的 html。正因为如此,坏人type成为了主要嫌疑人。
  • 当我说脚本标签不显示时,我的意思是当您查看站点的源代码时,它们完全丢失了。 '\n' 中有换行符,但 标记不存在。此外,当我删除第一个“...”时,标签会显示出来,但现在它不被识别为标签,它显示为纯文本。
  • 直到今天我都无法测试这个解决方案,因为我家里没有 Windows 电脑,但我刚刚测试了它并且它可以工作,我所要做的就是将类型更改为文本/javascript!谢谢大家的建议和建议。
猜你喜欢
  • 2015-05-25
  • 1970-01-01
  • 1970-01-01
  • 2010-10-02
  • 2020-07-16
  • 2012-02-19
  • 2018-01-27
  • 2022-01-06
  • 2016-08-06
相关资源
最近更新 更多