2013-07-13 65 views
2

已经尝试了一天以上,所以我现在要去我的最后一个手段,在这里张贴。我有一个网站用下面的代码在iFrame上打开链接 - PHP或JQuery

的style.css

#nav li a.active { 
    background: url('images/top-pages-button.png') 0 -80px; 
} 

#nav li ul li a:hover, #nav li ul li a.active { 
    color: #6dff6d; 
    font-weight: bold; 
    text-decoration: none; 
    background: url('images/pages-button.png') 0 -40px; 
} 

index.php页面

<ul id="nav"> 
<li><a href="#" title="Top Pages" class="active">Top Pages</a> 
<ul> 
    <li><a href="test.php" target="myframe" title="Page 1" class="active">Page 1</a></li> 
    <li><a href="test2.php" target="myframe" title="Page 2">Page 2</a></li> 
</ul> 
</li> 
</ul> 

<iframe name="myframe" style="width: 100%; height: 100%; border: none; overflow: hidden;" src="default-page.php"></iframe> 

test.php的页面

Simple PHP file calling a page with some content/info/text. 

上面的代码工作,有一个默认页面,当网站被加载时打开,当你点击一个链接时,它会正确打开iFrame上的页面。不过,我有以下需求。

  • 我想复制+粘贴链接,和朋友一起开上了iframe中 直接页共享。因此,例如我想 通过电子邮件发送链接到 http://www.mydomain.com/index.php?page=page1.php或类似 ,而不是告诉他们访问mydomain.com,然后点击顶部页面下的 Page 1。

  • 此外,该网站有多个类别,除了刚刚“排名靠前的网页”,所以我 想为上突出显示用户所在,类别和 链接打开。因此,如果我按第1页,对于该类别和该 链接将处于“活动”状态,然后当我转到页面1链接到 时返回到默认设置,并且Page 2为活动状态等等在我的 样式表上。

整个网站有三个部分。左侧导航,中间内容和右侧聊天。我需要聊天是静态的,这就是为什么我要这样做。我希望能够向朋友或朋友发送直接打开该页面的链接,而不是网站,并指示点击X,同时将类别和链接标记为“活动”并根据需要更改,并保持聊天div整个时间都是静态的。

让我知道如果这是可能的任何PHP的JQUERY请。非常感谢你!

+0

是同一个域上的iframe还是它不同的域?我不认为你可以控制一个iframes内容,如果它位于不同的域,因为相同的原产地策略。如果它的同一个域名可能可以通过js访问它。 – user1721135

+0

是的,这一切都将在同一个域名。试图加载位于同一个域内的iframe上的某些链接。 –

回答

1

index.php,只需添加一些检查$_GET['page'] - 如果这就是你想要的内容:

<li><a href="page1.php" target="myframe" title="Page 1" class="<?= ($_GET['page'] == 'page1.php') ? 'active' : ''; ?>">Page 1</a></li> 
<li><a href="page2.php" target="myframe" title="Page 2" class="<?= ($_GET['page'] == 'page2.php') ? 'active' : ''; ?>">Page 2</a></li> 

同样,对于iframe

<iframe name="myframe" style="width: 100%; height: 100%; border: none; overflow: hidden;" src="<?= $_GET['page']; ?>"></iframe> 

记住一个白名单的网页允许(否则iframe将加载任何东西):

if (isset($_GET['page'])) { 
    if (in_array($_GET['page'], array('page1.php', 'page2.php')) === false) { // not whitelisted 
     $_GET['page'] = 'default-page.php'; // revert to default 
    } 
} 

else { 
     $_GET['page'] = 'default-page.php'; // it isn't set 
} 

上面应该在页面顶部(或在$_GET['page']首次出现之前)。