Измените окно, которое будет открыто

Я хотел бы открывать окно, когда я нажимаю кнопку и изменяю html и css страницы, которая будет открыта. Как я могу это сделать?

Я работаю над проектом Symfony и просто хочу написать в абзаце окна, которое будет открыто. Для этого я попробовал:

$( "#tom" ).click(function() { 
  var wind = window.open("{{ path('AjoutFournisseur') }}", "Ajouter un fournisseur", "width=520,height=1080");
  wind.document.getElementById("can").innerHTML='TEST'; 
});

И у меня такая ошибка:

Uncaught TypeError: Cannot set property 'innerHTML' of null at HTMLSpanElement. (add-volet:113) at HTMLSpanElement.dispatch (jquery.min.js:2) at HTMLSpanElement.y.handle (jquery.min.js:2)

Не могли бы вы дать более подробное описание, чем «это не сработало»? Это дало вам ошибку? Что на самом деле произошло? getElementbYId не действителен, кстати. Это опечатка в вашем вопросе?

user47589 23.07.2018 16:03

Я работаю над проектом Symfony, и я просто хочу написать в абзаце окна, которое будет открыто. Поэтому для этого я использую: $ ("#tom") .click (function () {var wind = window.open ("{{path ('AjoutFournisseur')}}", "Ajouter un fournisseur", "width = 520) , height = 1080 "); wind.document.getElementById (" can "). innerHTML = 'TEST';}); И у меня есть эта ошибка: Uncaught TypeError: не удается установить свойство innerHTML со значением null в HTMLSpanElement. <anonymous> (add-volet: 113) в HTMLSpanElement.dispatch (jquery.min.js: 2) в HTMLSpanElement.y.handle ( jquery.min.js: 2)

ThomasES 23.07.2018 16:08

Добро пожаловать в Stack Overflow! Я переместил код из вашего комментария в вопрос; в будущем, пожалуйста, добавляйте информацию, редактируя сам вопрос, а не размещая его в комментариях; неформатированный код в комментариях может быть трудночитаемым, и его легко пропустить другим пользователям)

Daniel Beck 23.07.2018 16:16
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
64
1

Ответы 1

Если всплывающее окно находится не в том же домене, что и родительское окно, это будет невозможно без сотрудничества с другим сайтом (будут применяться правила CORS и политика того же происхождения).

Если обе страницы находятся в одном домене, вам нужно сделать изменение, чтобы дождаться завершения загрузки всплывающего окна, прежде чем пытаться его изменить; прямо сейчас вы открываете окно, а затем сразу пытаетесь изменить его содержимое до того, как сетевой запрос сможет их вернуть.

Я не могу продемонстрировать это в действующем фрагменте кода переполнения стека, потому что он не разрешает всплывающие окна, но это будет выглядеть так:

$('#tom').on("click", function() {
  let thePopup = window.open("url_of_popup_window.html");
  thePopup.onload = function(e) {
    thePopup.document.getElementById("can").innerHTML = 'TEST';
    // Or, since you're already using jQuery, use this equivalent to the above line:
    // $('#can', e.target).html('TEST'); // e.target is the popup document here
    // (this would be usable even if jQuery is not in the popup window, because this script runs in the parent)
  }
});

Другие вопросы по теме