文档元素后出现垃圾 Firefox 使用 JQuery Get 加载内容时出错

Pip*_*ith 5 html javascript css firefox jquery

我有一个页面(不幸的是位于登录系统后面),它基本上在文章列表的左侧有一个导航栏,当您单击一篇文章时,它会从存储在服务器上的 .inc 文件加载内容,使用提供的文件路径。

这在 Google Chrome 上运行良好。

然而,在 Firefox 上,当页面加载时,我收到这个奇怪的 javascript 错误:

“文档元素后的垃圾” - 当我单击该错误时,它会将我带到正在加载的第一篇文章的内容的第 2 行。

让我向您展示一些代码。

这是页面加载完成后运行的最后一个 JS 函数,其目的是加载初始文章。

function initialise_family_center_page() 
{
    if (current_element_id == "" || current_element_id == "family_center_general_info") //If this is the first article to be loaded
    {
        //Get the file path of the inc file to load

        var content_directory = file path....;

        jQuery.get(content_directory, function(data) 
        {
            $('#family_center_main_content').html(data);    //Load the content
        }); 
    }   
}
Run Code Online (Sandbox Code Playgroud)

正在加载的.inc文件中的内容如下:

<p>Some text</p>

<p>Some text</p>
Run Code Online (Sandbox Code Playgroud)

此时值得一提的是,在 Chrome 和 Firefox 中,内容会加载。然而在firefox中,由于JS错误,你不能再使用页面的其余部分,因为JS已经停止工作。

我通过谷歌搜索问题发现的有趣的一点是,如果我将文件的内容更改为:

<html>
    <p>Some Text</p>

    <p>Some Text</p>
</html>
Run Code Online (Sandbox Code Playgroud)

然后,错误不会出现并且页面可以正常工作(直到您加载下一个不带标签的内容文件。

然而,这不是一个合适的修复方法,因为有成千上万的文件。

有人可以帮忙吗?

GT.*_*GT. 5

我也有同样的问题。我创建了一个基本页面,其中单击一个nav元素会触发$.ajax()一个文件的提取,该文件将填充页面上的inc主页面- 如下所示:div

$(document).ready(function(){
  // Set trigger and container variables
  var trigger = $('nav.primary ul li a'),
      container = $('#se-main');
  trigger.on('click', function(){
    // Set click target from data attribute
    target = this.target;
    $.ajax({
        url:'../inc/'+target + '.inc',
        success: function(data){
            // Load target page into container
            container.html(data);
        },
        dataType: "text" // this seems to be ignored in Firefox
    });
// snip other stuff
});
Run Code Online (Sandbox Code Playgroud)

Firefox 控制台总是记录“文档元素后的垃圾”错误,除非我编辑 INC 文件并将文本包装在<html></html>. (不过,页面内容仍然更新 - 所以用户不会被它耽误)。

要解决此问题:添加inctext/htmlapache mime.types配置文件中的行。

找到与

text/html                   html htm
Run Code Online (Sandbox Code Playgroud)

改成

text/html                   html htm inc
Run Code Online (Sandbox Code Playgroud)

然后重新启动阿帕奇。

这对我有用。

默认文件位置:

Linux : /etc/mime.types;

瓦姆普[wampdir]\bin\apache\[apacheversion]\conf\mime.types

XAMPP[xamppdir]\apache\conf\mime.types

其中 [wampdir] 是安装 WAMP/XAMPP 的位置,[apacheversion] 是 WAMP 使用的 apache 版本。

如果您无权访问mime.types文件,或者您在共享主机上运行,​​则此解决方案没有用。

在这种情况下 - 假设您有权访问.htaccess- 添加以下内容.htaccess可能会起作用 -

AddType text/html .html .htm .inc
Run Code Online (Sandbox Code Playgroud)