【问题标题】:Passing Javascript To a Redirected Web page将 Javascript 传递给重定向的网页
【发布时间】:2012-10-30 12:25:33
【问题描述】:

我想在触发重定向时运行的代码是转到另一个网页(或本地 html 文件,在这种情况下都可以),但是传递一些 javascript 以在该页面上运行,因为该页面可以正常工作在 iframe 中嵌入内容。需要这样做以允许我在重定向时指定 iframe 中的内容。

说得简单点。当您转到 website.com/about/ 时,我怎样才能做到这一点,它会重定向到 website.com/,并将 /about/ 的内容加载到 iframe 中?

<head>
    <title> CodeBundle </title>
    <script>
        function home() {document.getElementById("loadedpage").src="home.html";}
        function about() {document.getElementById("loadedpage").src="about.html";}
        function reviews() {document.getElementById("loadedpage").src="reviews.html";}
        function tutorials() {document.getElementById("loadedpage").src="tutorials.html";}
        function blog() {document.getElementById("loadedpage").src="blog.html";}
</script>
</head>
<body>
    <header>
        <br><hr><font size=27><a onClick="home();">Code Bundle</a></font><br><hr>
        <div ALIGN=RIGHT>
            <font size=6> | <a onClick="about();">About</a> | <a     onClick="reviews();">Reviews</a> | <a onClick="tutorials();">Tutorials</a> | <a onClick="blog();">Blog<a> |</font> <hr>
        </div>
        <iframe id="loadedpage" src=home.html width=100% height=100% frameborder=0>Iframe Failed to Load</iframe>
    </header>
</body>
</body>    

这是我的 index.html 用于 website.com/

我想写一个页面,当你转到website.com/about/时,它会重定向到website.com/,运行javascript函数about(),从而显示关于页面。

【问题讨论】:

  • 我认为你可以在重定向页面上使用 window.opener。
  • 请进一步解释一下
  • 您可以将要访问的函数或变量放在第一页中(不要将其放在某个闭包中),然后使用 window.opener.FUNCTION/VARIABLE NAME 从其他页面访问,例如。 G。 window.opener.home().
  • 我会测试一下,如果可行,请将其发布为答案,我会接受,谢谢

标签: javascript redirect iframe web


【解决方案1】:

您必须使用查询参数或片段标识符传递一些数据。

见:

在任何一种情况下,你都会在 url 中出现一些东西,它看起来像:

http://www.example.com/?page=about

或:

http://www.example.com/#about

或者 - 这是最好的:

http://www.example.com/#!/about

因为它可以让您使网站可抓取。见:


现在,在阅读了您对the answer by theredled 的评论后,您“定期添加新内容并将其加载到嵌入的 iframe 中比每次都编写新的 html 更快” 我不得不问这个问题:你不是在你的网站上使用templating system吗?

请记住,制作 AJAX 加载的内容并使用片段标识符来显示正确的内容并不是因为页面创建更容易(事实并非如此),而是因为用户体验更快且响应更快。例如,参见 SoundJS 库的网站:

当您单击顶部的 PreloadJS 链接时,您会转到:

内容重新加载,地址栏发生变化,但页面实际上没有重新加载。 (您可以看到它可以正常抓取,因为如果您google for ReloadJS,它会显示在结果中。)

【讨论】:

  • 我们曾经是,但我们决定,与其为每个内容都链接到我们的模板格式,不如将内容绑定到模板对我们来说更快,因为我们经常添加内容
  • 我会投赞成票,因为这是一个很好的回应,但是我想设置这个,以便将 www.website.com/about/ 加入书签的人重定向到主页并关于其中加载的内容。用这些方法可以吗?
  • @CodeBundle 用于处理片段标识符(# 哈希部分)和重定向,请参阅此问题:stackoverflow.com/questions/2286402/…
  • 我会赞同@rsp 的观点:这不是正确的做法。如果编辑 HTML 很痛苦,请安装 Joomla 或其他一些 CMS。只是不要用 iframe 填充您的页面,这样您就可以轻松地对其进行编辑。这就像在空白页(仔细对齐)上打印一封信的内容,然后将其插入印有信笺抬头的信封中,因此内容通过小窗口显示。
  • @PhilH 很好的类比 :) 但我们没有在这种情况下使用外部工具的能力。
【解决方案2】:

通过用户会话传递内容?

但是,这是一个非常肮脏的案例,也许你已经知道了:)

【讨论】:

  • 不太了解您的回复,是的,我知道我正在尝试做的事情是为一种糟糕的网站编写方式提供一个障碍,但它很有效,因为我们会定期添加新内容并将其加载嵌入 iframe 比每次都编写新的 html 更快。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-09
相关资源
最近更新 更多