是否可以从锚标记中调用Javascript?

时间:2011-10-18 22:51:08

标签: javascript anchor

  

可能重复:
  Handle URL anchor change event in js

是否可以通过锚标签运行javascript函数。

E.g。如果你去了... www.site.com/index.html#function1 ...那么function1会运行吗?

4 个答案:

答案 0 :(得分:2)

你不能通过简单地将它包含在锚标记中来做到这一点,但你可以使用#标签(location.hash)来调用你的函数

答案 1 :(得分:2)

    $(document).ready(function() {

        //Get hash from URL. Ex. index.html#Chapter1
        var hash = location.hash;

        if (hash == '#Chapter1') {
            //Do stuff here
        }
    });

答案 2 :(得分:2)

在页面上放置一个onload侦听器,并在链接上单击一个侦听器,转到锚点。触发时,请检查window.location.href,如:

<body onload="checkHash();">

  <a href="#foo" onclick="checkHash()">go to foo</a>
  <br>
  <a href="#bar">go to bar</a>

  <p>something in between</p>

  <a name="foo">foo</a>
  <br>
  <a name="bar">bar</a>

<script type="text/javascript">
  function checkHash() {
    // Check URL using setTimeout as it may not change before
    // listener is called
    window.setTimeout(doHashCheck, 10)
  }
  var doHashCheck = (function(global) {
    return function() {
      var fnName = window.location.hash.replace(/^#/,'');
      console.log(fnName);
      // fnName should be a native function, not a host method
      if (typeof global[fnName] == 'function') {
          global[fnName]();
      }
    }
  })(this);

  function foo() {
    alert('foo');
  }

  if (!window.console) window.console = {};
  if (!console.log) console.log = window.alert;
</script>
</body>

答案 3 :(得分:0)

您无法像这样调用javascript,但如果您控制其他站点,则可以检查正文Load事件中的URL,然后执行脚本。