web-dev-qa-db-fra.com

Historique Javascript. PushState ne fonctionne pas?

J'ai ce code ici:

<script type="text/javascript">
function goFunction(){
  history.pushState("google.ca", "GOOGLE CANADA", "http://www.google.ca");
  return event.preventDefault();
}
</script>

et

<a href="#" onclick="javascript:goFunction();">GO</a>

lorsque je clique sur mon lien, j'obtiens cette erreur dans mon journal d'erreurs:

 Uncaught SecurityError: A history state object with URL 'http://www.google.ca/' cannot be created in a document with Origin 'http://cowelllaserhair.com'. 

vous pouvez le voir sur: http://cowelllaserhair.com/test.html

Qu'est-ce que je fais mal?

Dois-je faire référence à quelque chose?

Merci, J

18
user1269625

L'argument URL de pushState doit être relatif à la page actuelle ou à une URL absolue dans votre propre domaine. Vous ne pouvez pas pousser le domaine interétatique - ce serait une faille de sécurité majeure.

Le documentation MDN dit:

L'URL de la nouvelle entrée d'historique est donnée par ce paramètre. Notez que le navigateur ne tentera pas de charger cette URL après un appel à pushState (), mais il pourrait tenter de charger l'URL plus tard, par exemple après que l'utilisateur a redémarré son navigateur. La nouvelle URL n'a pas besoin d'être absolue; si elle est relative, elle est résolue par rapport à l'URL actuelle. La nouvelle URL doit être de la même origine que l'URL actuelle; sinon, pushState () lèvera une exception. Ce paramètre est facultatif; s'il n'est pas spécifié, il est défini sur l'URL actuelle du document.

Le paramètre URL est généralement laissé vide ou définissez une URL relative sur votre propre site, comme #/hello.

26
joews