Ragazzi ho:

codice HTML:
    <a href="#!documentation">
      <div class="block short green" style="top: 410px; left: 1010px" id="block_8" data-block-id="8" data-ajax-page="YES">
        <i class="fi-page icon" data-ajax-page="YES"></i>
        
        <span data-ajax-page="YES">Documentazione</span>
        
        <i class="fi-paperclip anchor" id="anchor_8"></i>
      </div>
    </a>

<script>
      window.addEventListener("mouseup", function(e) {
        e = e || window.event;
        
        if (e.preventDefault) {
          e.preventDefault();
        }
        
        var target = e.target ? e.target : e.srcElement;
        var attr   = target.getAttribute("data-ajax-page");
        
        if (attr && attr.trim() === "YES") {
          var fragment = window.location.hash.substring(2);
          console.log(fragment);
          $ajax({
            url: base_url + "/" + fragment + ".html",
            type: "GET",
            success: function(get_data, status) {
              document.getElementById("page").innerHTML = get_data;
            }
          });
        }
      });
</script>
Solo che ovviamente l'hash viene estratta "in ritarto", perchè prima prova ad eseguire il codice e poi assegna l'hash.
Quindi ho pensato a queste soluzioni:

- Utilizzo setTimeout;
- Utilizzo un worker;
- Non utilizzo nessuna delle due e mi affido alla vostra esperienza;