首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用appendChild引导

问使用appendChild引导
EN

Stack Overflow用户
提问于 2018-07-09 04:10:43
回答 2查看 290关注 0票数 0

我用的是引导带使用香草javascript。

index.html

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
  <title>My App</title>
</head>
<body>
  <script src="router.js"></script>
  <div id="my-app"></div>
</body>

</html>

router.js

代码语言:javascript
复制
window.addEventListener('load', () => {
  if (window.location.pathname === '/register') {
    const myApp = document.getElementsByTagName('head')[0]
    const layoutScript = document.createElement('script')
    const jQuery = document.createElement('script')
    const bootStrapJs = document.createElement('script')
    const jQueryCookie = document.createElement('script')

    const bootStrapMinCss = document.createElement('link')
    const bootStrapThemeCss = document.createElement('link')

    jQuery.src = 'https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js'

    bootStrapMinCss.type = 'text/css'
    bootStrapMinCss.rel = 'stylesheet'
    bootStrapMinCss.href = 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css'

    bootStrapThemeCss.type = 'text/css'
    bootStrapThemeCss.rel = 'stylesheet'
    bootStrapThemeCss.href = 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css'

    bootStrapJs.src = 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js'

    jQueryCookie.type = 'text/javascript'
    jQueryCookie.src = 'https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js'

    layoutScript.type = 'text/javascript'
    layoutScript.src = 'javascripts/views/layout.js'

    myApp.appendChild(jQuery)
    myApp.appendChild(jQueryCookie)
    myApp.appendChild(bootStrapJs)
    myApp.appendChild(bootStrapMinCss)
    myApp.appendChild(bootStrapThemeCss)
    myApp.appendChild(layoutScript)
  }
})

页面加载得很好,样式设计与我所期望的一样。然而,我一直有两个错误:

代码语言:javascript
复制
Uncaught ReferenceError: jQuery is not defined

和

代码语言:javascript
复制
Uncaught Error: Bootstrap's JavaScript requires jQuery`

当将这些脚本文件直接加载到index.html时,我不会收到任何错误。但是,我想使用JS来完成这个任务。

引导需要jQuery,所以我先加载jQuery,然后加载所有其他资产,,那么为什么浏览器认为jQuery没有定义呢?

截图如下:

​

​

更新:

通过将jQuery导入移动到我的index.html,两个错误都消失了。所以,index.html应该是这样的:

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
  <title>My App</title>
  <script
    src="https://code.jquery.com/jquery-3.2.1.min.js"
    integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
    crossorigin="anonymous">
  </script>
</head>
<body>
  <script src="router.js"></script>
  <div id="my-app"></div>
</body>

</html>

这是更好的,但仍然不能解释为什么我不能在我的路由器做同样的事情,使用普通的JS。

EN

回答 2

Stack Overflow用户

发布于 2018-07-09 04:38:25

将常量名称jQuery更改为任何其他名称,因为jQuery是保留关键字。

代码语言:javascript
复制
const load_jquery = document.createElement('script')
load_jquery.src = 'https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js'
myApp.appendChild(load_jquery)
票数 2
EN

Stack Overflow用户

发布于 2018-07-09 04:55:34

问题是,由于您是动态加载脚本--它们不是以同步方式加载的,也就是说,在加载jquery之前,可能会加载引导脚本。

您可以尝试在jquery脚本的加载回调中加载rest或脚本。

代码语言:javascript
复制
  jQuery.addEventListener('load', () => {
    myApp.appendChild(jQueryCookie)
    myApp.appendChild(bootStrapJs)
    myApp.appendChild(bootStrapMinCss)
    myApp.appendChild(bootStrapThemeCss)
    myApp.appendChild(layoutScript)
  });
  myApp.appendChild(jQuery)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51238117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档