Django Ссылки и кнопки Проблема с кликами: Все щелчки открываются в новом окне
После ряда исправлений все нажатия на кнопки, ссылки, кнопки отправки... открываются в новом окне. Отправка форм больше не работает, что означает, что я не могу проверить последние сделанные изменения, а навигация, очевидно, сломана.
Что происходит: При нажатии на любую кнопку или ссылку открывается новое окно/вкладка, как и должны были бы вести себя ссылки с атрибутом target="_blank". Что ожидается: Действие после щелчка по любой кнопке или ссылке должно оставаться на той же странице, как по умолчанию ведет себя ссылка target="self"...
Я понятия не имею, откуда может исходить проблема...:
- Некорректность или закрытость? Я проверял, перепроверял...
- Одна из библиотек, оставшихся после удаления tailwind .
- Ошибка в расширении django_browser_reload .
- Что-то связанное с django-unicorn ?
Спасибо, что помогли мне решить проблему с блокировкой...
Быстрое исправление, не постоянное и Не работает для форм.
Спасибо, что помогли найти постоянное решение...
<script>
/**
* Force links to open in the same window (except those with target="_blank")
*
* This script prevents links without the `target="_blank"` attribute from opening in a new window/tab.
* It achieves this by intercepting the click event and setting the current window's location to the link's URL.
* Details:
* 1. Selecting all anchor elements (links) using `document.querySelectorAll('a')`.
* 2. Looping through each link and checking if it has the `target` attribute using `link.hasAttribute('target')`.
* 3. Adding a click event listener for links without the `target` attribute.
* 4. Inside the event listener:
* - `event.preventDefault()` prevents the default link behavior of opening in a new window.
* - `window.location.href = link.href;` sets the current window's location to the link's URL, effectively opening it in the same window.
*
* @see [Stack Overflow Question](https://stackoverflow.com/questions/78510338/urgent-django-links-buttons-click-issue-all-clicks-open-in-a-new-window)
*/
const links = document.querySelectorAll('a, button'); // Select all links
let condFun = (link) => !link.hasAttribute('unicorn:click')
&& (!link.hasAttribute('target') || link.target != "_blank");
links.forEach(link => {
if (condFun(link)) { // Check if target attribute is missing
link.addEventListener('click', (event) => {
event.preventDefault(); // Prevent default link behavior
window.location.href = link.href; // Open link in the same window
});
}
});
</script>