Javascript:从不同方向覆盖默认的javascript行为

时间:2015-12-15 22:49:04

标签: javascript

我有3个html页面

第一页=主页,第二页和第三页有2个锚点(链接)

第二页= 1锚到第三页

所以..第一页和第二页都有一个锚到第三页..

第三页的内容包含动态内容。但是,内容与上一页的内容不同。

所以我有一个非常简单的html脚本来加载动态html:

<div class="thumbnail-panel row small-unstack">
    <script>insertModels();</script>
</div>

那么如何根据以前的位置更改insertModels的结果呢?

2 个答案:

答案 0 :(得分:1)

您可以使用document.referrer查找用户访问您所在页面的网址。因此,请将其作为带有insertModels的网址的参数:

<script>insertModels(document.referrer);</script>

然后使用if-statement修改函数:

insertModels = function(loc) {
    if( loc === "someCertainUrlHere" ) {
        // Code for spesific last location
    } else {
        // normal code
    }
}

答案 1 :(得分:0)

我的假设是您的设置如下:

Page 1:
foo

Page 2:
bar

Page 3: from page 1:
foo bar

Page 3: from page 2:
bar foo

如果是这种情况,那么你可以通过以下几种方式做到这一点。

首先,你可以为每个第3页变体创建一个.html页面,它实际上与你现在正在进行的页面交付方式一致。

Page 3: from page 1:

looks like Page 3: foo bar

Page 4: from page 2:

looks like Page 3: bar foo

或者你可以有一个shell模板,无论如何加载,但包含它自己的脚本,检查(比如说url)参数然后加载页面的辅助内容

Page 3: from page 1 ( url ?page1 )

if ( window.location.indexOf('page1') > -1 ) { // foo bar }


Page 3: from page 2 ( url ?page2 )

if ( window.location.indexOf('page2') > -1 ) { // bar foo }

您的第三个选项是会话存储

如果你看一下这里的文档: https://developer.mozilla.org/en/docs/Web/API/Window/sessionStorage

您可以在浏览器中设置变量并在需要时再次检查它们,您可以使用与第二个示例类似的方式:

Page 1:
sessionStorage.setItem("page", "1");

Page 2:
sessionStorage.setItem("page", "2");

Page 3:
if (parseInt(sessionStorage.getItem("page")) === 1) {
// foo bar
}

Page 3:
if (parseInt(sessionStorage.getItem("page")) === 2) {
// bar foo
}

显然这都是伪代码,但它应该有意义。如果您包含更多项目的结构和设置,我可以扩展我的答案以更准确地适应您的场景。