点击链接时,javascript更改iframe位置

时间:2013-06-28 02:28:31

标签: javascript html iframe

我在同一页面上有很多链接。链接将开始不同的下载。 我想要做的是,当点击链接开始下载时,我还想将iframe位置更改为php页面以增加下载命中计数器。

代码需要在每个链接上的onClick事件中,因为我在同一页面上有这么多。

我想要这样的事情:

<a href="download001.zip" onClick="iframe.location.href='hits_counter.php?file=download001>Start download 001</a><br>
<a href="download002.zip" onClick="iframe.location.href='hits_counter.php?file=download002>Start download 003</a><br>
<a href="download003.zip" onClick="iframe.location.href='hits_counter.php?file=download003>Start download 003</a><br>
...

必须激活两个事件:下载文件并更改iframe href

2 个答案:

答案 0 :(得分:0)

如果你有很多,onClick不是解决方案

使用jquery你可以用这样的东西处理所有这些:

$("a").click(function(){
    $.get("hits_counter.php",{ file:$(this).attr("href") });
});

并且不再需要iframe

答案 1 :(得分:0)

您可以提供文件并从服务器端递增计数器。发送文件以供下载的代码如下。所以你的hits_counter.php可以是这样的

$file = $_GET['filename'];

if (file_exists($file)) {
  header('Content-Description: File Transfer');
  header('Content-Type: application/octet-stream');
  header('Content-Disposition: attachment; filename='.basename($file));
  header('Content-Transfer-Encoding: binary');
  header('Expires: 0');
  header('Cache-Control: must-revalidate');
  header('Pragma: public');
  header('Content-Length: ' . filesize($file));
  ob_clean();
  flush();
  readfile($file);

  //increment counter based on file name
  exit;
}

$file = $_GET['filename']; if (file_exists($file)) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($file)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); ob_clean(); flush(); readfile($file); //increment counter based on file name exit; }
来源 - http://php.net/manual/en/function.readfile.php