【问题标题】:Unable to link js file to html to load local files无法将 js 文件链接到 html 以加载本地文件
【发布时间】:2018-01-28 12:37:05
【问题描述】:

我想要做什么

使用本地服务器在链接的 .js 文件中使用 .load 函数将 HTML 文件加载到页面上的内容块中。

我正在使用什么

HTML
CSS
Javascript/jQuery
WAMP

视窗 10

问题

我可以在页面内成功执行此操作,但在使用链接文件时无法正常工作(事实上,当我使用链接文件时,我无法让 任何 JavaScript 工作文件),我宁愿能够维护一个单独的 .js 文件。

我做了什么

  • 检查拼写
  • 检查的文件路径
  • 阅读类似的 SO 问题和 cmets(没有帮助)
  • 重启了我的电脑(为什么不呢?)
  • 在使用 WAMP 之前,尝试在允许本地文件访问的情况下启动 Chrome。这工作了几分钟......直到它不再起作用了。

注意事项

  • 我对 JavaScript 和 jQuery 还很陌生。
  • 链接的 .css 文件从未给我带来任何麻烦。
  • 是的,nav.html 与 index.html 位于同一目录中。
  • 是的,js文件夹和index.html在同一个目录下,design.js确实在那个文件夹里。
  • WAMP 图标为绿色,我能够成功设置 VirtualHost。

不适合我的代码

index.html

<html>
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.3/jquery.min.js"></script>
    <script src="js/design.js"></script>
  </head>
  <body>
    <header>
    </header>
    <nav>
    </nav>
    <article>
      <section>
      </section>
    </article>
    <footer>
    </footer>
  </body>
</html>

design.js

$(document).ready(function() {

    loadNav();

});

function loadNav(){

    $('nav').load('nav.html');

}

design.js

$(document).ready(function() {

    $('nav').load('nav.html');

});

适合我的代码

index.html

<html>
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.3/jquery.min.js"></script>
    <script>
      $(document).ready(function(){

        $('nav').load('nav.html');

      });
    </script>
  </head>
  <body>
    <header>
    </header>
    <nav>
    </nav>
    <article>
      <section>
      </section>
    </article>
    <footer>
    </footer>
  </body>
</html>

index.html

<html>
  <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.3/jquery.min.js"></script>
  </head>
  <body>
    <header>
    </header>
    <nav>
    </nav>
    <article>
      <section>
      </section>
    </article>
    <footer>
    </footer>
    <script>
        $('nav').load('nav.html');
    </script>
  </body>
</html>

【问题讨论】:

    标签: javascript jquery html css wamp


    【解决方案1】:

    如果你打开控制台,你会看到

    XMLHttpRequest cannot load file:///.../nav.html. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.
    

    这是关于浏览器政治的。它适用于 Firefox,但不适用于 Chrome。 如果你想让它工作,你可以在本地机器上运行一个网络服务器来提供文件。

    更多信息:

    XMLHttpRequest cannot load file. Cross origin requests are only supported for HTTP

    "Cross origin requests are only supported for HTTP." error when loading a local file

    【讨论】:

    • 我已经在使用 WAMP(我在上面提到过),我已经使用它设置了本地服务器。我很确定我设置正确。它也不适用于 Firefox。不过,下次我处理这个问题时,我会自己检查控制台。
    • 我认为它正在使用端口 80,但添加完整路径对我没有任何作用。
    • 感谢@Danil 与我一起解决问题。我发现我的错误是一个愚蠢的错误(将我的发现作为上面的答案发布)。
    【解决方案2】:

    OP 回答自己的问题。我在上面发布的 JavaScript 中还有另一个函数,它缺少一个结束大括号,这导致整个 .js 文件无法工作。愚蠢的错误!一切正常,为了记录,我没有必要包含完整路径。

    【讨论】:

      猜你喜欢
      • 2012-10-28
      • 2014-02-12
      • 2020-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多