我已经为客户端创建了一个搜索页面,但在这种情况下,实际的搜索页面位于 an 中iframe
,并且向用户呈现了一个围绕 said 的装饰性外壳iframe
,它将其 URL 参数传递给iframe
,然后解释它们并执行搜索. 这是我无法改变的。它还向我提出了一个独特的问题,即如果用户在搜索页面的搜索栏中键入以执行另一个搜索,iframe 会刷新但 shell 页面不会。这意味着该 URL 现在不再与当前搜索相关。如何在不离开这个 shell 页面的情况下更改地址栏中的 URL?这个系统的全部意义在于减少等待iframe
刷新而不是整个页面,所以刷新整个页面会适得其反。
完整的解决方案
对于只需要代码片段的任何人,这是我对 Ian 解决方案的最终实现:
<?PHP
// ...
function buildTitleChanger($search) {
?>
window.top.history.pushState({search : "<?PHP echo str_replace("\"", "\\\"", $search); ?>"}, document.title, window.location.search);
window.top.document.title = document.title;<?PHP
}
// ...
?>
内联 PHP 有点脏,但它在 100% 的时间里都能正常工作:3