diff --git a/lib/proto/attach-link.js b/lib/proto/attach-link.js index 7de3317..bb48902 100644 --- a/lib/proto/attach-link.js +++ b/lib/proto/attach-link.js @@ -1,8 +1,7 @@ var on = require("../events/on") var clone = require("../util/clone") -var attrClick = "data-pjax-click-state" -var attrKey = "data-pjax-keyup-state" +var attrState = "data-pjax-state" var linkAction = function(el, event) { // Since loadUrl modifies options and we may add our own modifications below, @@ -11,7 +10,7 @@ var linkAction = function(el, event) { // Don’t break browser special behavior on links (like page in new window) if (event.which > 1 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) { - el.setAttribute(attrClick, "modifier") + el.setAttribute(attrState, "modifier") return } @@ -20,25 +19,25 @@ var linkAction = function(el, event) { // Ignore external links. if (el.protocol !== window.location.protocol || el.host !== window.location.host) { - el.setAttribute(attrClick, "external") + el.setAttribute(attrState, "external") return } // Ignore click if we are on an anchor on the same page if (el.pathname === window.location.pathname && el.hash.length > 0) { - el.setAttribute(attrClick, "anchor-present") + el.setAttribute(attrState, "anchor-present") return } // Ignore anchors on the same page (keep native behavior) if (el.hash && el.href.replace(el.hash, "") === window.location.href.replace(location.hash, "")) { - el.setAttribute(attrClick, "anchor") + el.setAttribute(attrState, "anchor") return } // Ignore empty anchor "foo.html#" if (el.href === window.location.href.split("#")[0] + "#") { - el.setAttribute(attrClick, "anchor-empty") + el.setAttribute(attrState, "anchor-empty") return } @@ -49,12 +48,12 @@ var linkAction = function(el, event) { this.options.currentUrlFullReload && el.href === window.location.href.split("#")[0] ) { - el.setAttribute(attrClick, "reload") + el.setAttribute(attrState, "reload") this.reload() return } - el.setAttribute(attrClick, "load") + el.setAttribute(attrState, "load") options.triggerElement = el this.loadUrl(el.href, options) @@ -71,6 +70,7 @@ module.exports = function(el) { if (isDefaultPrevented(event)) { return } + el.setAttribute(attrState, "") linkAction.call(that, el, event) }) @@ -80,12 +80,6 @@ module.exports = function(el) { return } - // Don’t break browser special behavior on links (like page in new window) - if (event.which > 1 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) { - el.setAttribute(attrKey, "modifier") - return - } - if (event.keyCode === 13) { linkAction.call(that, el, event) } diff --git a/lib/proto/parse-element.js b/lib/proto/parse-element.js index e79b4e0..02659d9 100644 --- a/lib/proto/parse-element.js +++ b/lib/proto/parse-element.js @@ -2,14 +2,14 @@ module.exports = function(el) { switch (el.tagName.toLowerCase()) { case "a": // only attach link if el does not already have link attached - if (!el.hasAttribute("data-pjax-click-state")) { + if (!el.hasAttribute("data-pjax-state")) { this.attachLink(el) } break case "form": // only attach link if el does not already have link attached - if (!el.hasAttribute("data-pjax-click-state")) { + if (!el.hasAttribute("data-pjax-state")) { this.attachForm(el) } break diff --git a/tests/lib/proto/attach-link.js b/tests/lib/proto/attach-link.js index cae020a..0886340 100644 --- a/tests/lib/proto/attach-link.js +++ b/tests/lib/proto/attach-link.js @@ -5,7 +5,7 @@ var trigger = require("../../../lib/events/trigger") var attachLink = require("../../../lib/proto/attach-link") var a = document.createElement("a") -var attr = "data-pjax-click-state" +var attr = "data-pjax-state" var preventDefault = function(e) { e.preventDefault() } tape("test attach link prototype method", function(t) {