В настоящее время я использую одну страницу для создания нового окна с URL-адресами с временным воспроизведением. Многие страницы, на которые он загружается, реагируют на хеш-навигацию. Я делаю это так:Как я могу изменить location.hash целевого окна, не перезагружая страницу?
window.open(url,"playback");
Поскольку мы играем через URL-адреса, мы должны увидеть, что страница отвечает соответствующим образом. Однако проблема, с которой я столкнулся, заключается в том, что вызов window.open() фактически перезагружает страницу при изменении хэша.
Например, загрузка "pageA.htm", а затем "pageB.htm # tab2" работает безупречно. Однако проблема заключается в том, что когда я пытаюсь перейти от «pageB.htm # tab2« to »pageB.htm # tab3"; полностью перезагружает страницу (правильно реагирует на хэш), вместо того, чтобы просто запускать «onhashchange», как я ожидал.
Есть ли альтернатива window.open(), которую я должен вызывать для хэш-изменений, которые предотвратят полную перезагрузку страницы?
Edit: Окончательное решение выглядит примерно так:
playbackWindow = window.open(url,"playback");
Затем, когда мы хотим изменить хэш:
playbackWindow.location.href = "poundIt";
Довольно близко, но мы сталкиваемся с проблемами перекрестных доменов, пытаясь получить доступ к window.location.hash в новом окне. – lars
Ага, поэтому со страницы X вы открываете страницу Y, а затем хотите изменить хэш на странице Y со страницы X? : -) Хорошо, тогда я предлагаю использовать 'window.postMessage' для связи между двумя страницами, как показано здесь: https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage. Таким образом, вы можете просто отправить событие со страницы X и сообщить странице Y, чтобы обновить свой собственный хэш. –
В этот момент я просто толкнул его с помощью большого предложения if ifdomain, которое возвращается к window.open с целью. В идеальном случае страница Y не знает, что ее мастурбируют со страницы X, и для ее дистанционного управления не требуется особых действий. Спасибо за то, что вы указали мне на использование объекта location/window ref вместо того, чтобы вслепую попросить браузер найти правильный по имени :) – lars