是否可以使用超链接更改页面并激活目标页面上的脚本?

时间:2013-10-01 06:58:04

标签: javascript html

我的想法是,如果我点击第1页上的链接,它将加载第2页(同一窗口)并激活第2页上的脚本。所有这些都是通过相同的链接完成的。

更具体地说,我正在制作的页面将链接到第2页上的文章,而第2页上的文章是隐藏的,但将使用JavaScript进行扩展(如您在某些文章中看到的“阅读更多”功能)博客)。第1页将有一个链接直接引导文章并同时扩展它。

感谢您的帮助。

编辑1:对不起,我可能还没有完全澄清。基本上,它会有多篇文章。从第1页开始,我打算使用不同的链接来激活第2页上的不同文章(还有来自不同链接的其他页面上的文章,但我只需要至少先完成一个工作)。

3 个答案:

答案 0 :(得分:1)

只需在第2页设置onload即可触发您喜欢的任何JavaScript。在一个尚不存在的页面上触发js函数很难。

<body onload="expandArticle()">

如果要将参数发送到page2(例如要扩展的文章ID),有几个选项可以执行此操作。例如,在页面url中设置它:

<a href="/articles.html?articleid=7">Read article</a>

然后在文章页面(第2页)的javascript中选择该请求参数。

function expandArticle() {
   var url = window.location.href,
       articleId = url.split("?")[1].split("=")[1];

   console.log("articleId = " + articleId);
   // do something with article
}

(这不是提取请求参数最奇特的方式,它取决于参数结构。但是对于这样一个简单的例子它可以工作。使用正则表达式可能是最好的方法,就像这里:How can I get query string values in JavaScript?

答案 1 :(得分:0)

在page1中有一个重定向到Page2的简单链接,在页面2中使用Jquery document.ready函数根据需要调用javascript函数。

答案 2 :(得分:0)

我建议您使用URL的片段标识符部分来决定在加载时显示哪些内容。

假设您的第二页是example.com/foo

在第一页中,您将链接标记的href设置为:

<a href="/foo#bar">My Link</a>

然后你修改你的第二个,以便你的onDocumentReady监听器看起来像

function onLoad()  {
    switch (document.location.hash) {
    case "bar": showContentForBar(); break;
    case ....
    }
}

使用url的片段部分可确保服务器不受影响(浏览器不会发送片段部分)。从历史上看,该片段用于锚链接,现在仍可用于实现相同的“状态保存”功能。

请注意,在HTML5历史记录API之前,这是实现单页面webapps的普遍技术(虽然更详细的版本)。

希望这会有所帮助。