Прежде чем спросить, да, я несколько раз использую Browserify, но по какой-то причине он просто не будет работать на этот раз.
Эта проблема:
Когда я загружаю веб-сайт, bundle.js будет выполняться только один раз, а затем остаётся без внимания в течение оставшегося времени. - Требование не является проблемой, так как я пытался использовать Console.log, некоторые требуют кода, который работал, но потом все, что сделано пользователем, не будет выполнено.
Как вы можете видеть в моем коде, я пытаюсь выполнить registerHref() onclick моей кнопки, что работает, когда я не использую bundle.js, но как только я делаю это с моим пакетом, ему это нравится полностью игнорируется. Я получу ошибку, в которой говорится: " Uncaught ReferenceError: registerHref is not defined at HTMLButtonElement.onclick
- Но когда я пытаюсь выполнить console.log, функция на window.onload - она работает так, как должна.
Мой HTML:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<script type="text/javascript" src="bundle.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<div class="header" style="border-style: solid; text-align: center;">
<button id="register" onclick="registerHref()">Register</button>
</div>
</body>
</html>
Мой Javascript:
function registerHref() {
window.location.href = "./register.html"
}
Что я сделал:
browserify main.js > bundle.js
<- Обычно работает нормально Проблема в том, что после компиляции кода функция не привязана к объекту window
а выполняется в другой области.
У вас есть в основном два варианта:
registerHref
к объекту окна (не рекомендуется):
function registerHref() {
window.location.href = "./register.html"
}
window.registerHref = registerHref;
onclick
из вашего HTML (рекомендуется):
function registerHref() {
window.location.href = "./register.html"
}
document.getElementById('register').addEventListener('click', registerHref);