Почему popper.js не работает в laravel - PullRequest
0 голосов
/ 16 октября 2018

Я уже пробовал много вариантов, которые можно найти в Интернете, но я не могу заставить его работать ..

Я запустил в терминале:

npm install popper.js --save

далеея отредактировал мои "resources / js / bootstrap.js";

 window._ = require('lodash');      
 import Popper from 'popper.js/dist/umd/popper.js';
 /**
 * We'll load jQuery and the Bootstrap jQuery plugin which provides support
 * for JavaScript based Bootstrap features such as modals and tabs. This
 * code may be modified to fit the specific needs of your application.
 */

try {
    window.$ = window.jQuery = require('jquery');
    window.Popper = Popper;
    require('bootstrap');
} catch (e) {}

, затем добавил это в свой webpack.mix.js

mix.autoload({
jquery: ['$', 'window.jQuery',"jQuery","window.$","jquery","window.jquery"],
'popper.js': ['Popper']
})

и добавил этот код в мой каталогшаблон, который содержит мой заголовок

 <script src="{{ asset('js/app.js') }}" defer>

 $(function () {
 $('[data-toggle="popover"]').popover()
 })
 </script>

и это на мою страницу

<button type="button" class="btn btn-lg btn-danger" data-toggle="popover" title="Popover title" data-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button>

тогда я запустил

npm run dev

Это мой package.json

"devDependencies": {
        "axios": "^0.18",
        "bootstrap": "^4.0.0",
        "cross-env": "^5.1",
        "jquery": "^3.3.1",
        "laravel-mix": "^2.0",
        "lodash": "^4.17.5",
        "popper.js": "^1.14.4",
        "vue": "^2.5.7"
    },
    "dependencies": {
        "popper": "^1.0.1",
        "tooltip.js": "^1.3.0"
    }

Я новичок, когда дело доходит до javascript, но мне интересно учиться

Скажите, пожалуйста, что мне не хватает

Заранее спасибо

включаемый файл (заголовок)

<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- CSRF Token -->
    <meta name="csrf-token" content="{{ csrf_token() }}">

    <title>{{ config('app.name', 'Laravel') }}</title>
    <!-- Scripts -->
    <script src="{{ asset('js/app.js') }}" defer>
  $(function () {
  $('[data-toggle="popover"]').popover()
})
    </script>

    <!-- Fonts -->
    <link rel="dns-prefetch" href="https://fonts.gstatic.com">
    <link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet" 
type="text/css">

    <!-- Styles -->
    <link href="{{ asset('css/app.css') }}" rel="stylesheet">
</head>
<body>
        @include('inc.navbar')
        <div class="container">
        @include('inc.messages')
        @yield('content')
        </div>
    </body>
    <!--<script src="/vendor/unisharp/laravel-ckeditor/ckeditor.js"></script>
    <script src="/vendor/unisharp/laravel-ckeditor/adapters/jquery.js"></script>
    <script>
    $('textarea').ckeditor();
    </script>-->

</body>
</html>

1 Ответ

0 голосов
/ 16 октября 2018

У вас есть два закрывающих тега body.Затем вы загружаете скрипты в шапку.Когда вы используете src в скрипте, он загрузит файл, он не будет использовать тело.Поэтому вы должны использовать:

<script src="{{ asset('js/app.js') }}" defer />

<script>
    $(function () {
        $('[data-toggle="popover"]').popover()
    });
</script>

Но поместите это в конец вашего body контента, прямо перед тегом </body>.

- EDIT -

Использование ссылок CDN

<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>

<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
...