Merge pull request #36 from pklada/refresh

Add simple refresh method and protect against links being bound more than once.
This commit is contained in:
Maxime Thirouin
2015-01-29 07:03:16 +01:00
7 changed files with 22 additions and 11 deletions

View File

@@ -44,6 +44,8 @@ Pjax.prototype = {
parseDOM: require("./lib/proto/parse-dom.js"), parseDOM: require("./lib/proto/parse-dom.js"),
refresh: require("./lib/proto/refresh.js"),
attachLink: require("./lib/proto/attach-link.js"), attachLink: require("./lib/proto/attach-link.js"),
forEachSelectors: function(cb, context, DOMcontext) { forEachSelectors: function(cb, context, DOMcontext) {

View File

@@ -44,8 +44,8 @@ var linkAction = function(el, event) {
// dont do "nothing" if user try to reload the page by clicking the same link twice // dont do "nothing" if user try to reload the page by clicking the same link twice
if (el.href === window.location.href.split("#")[0]) { if (el.href === window.location.href.split("#")[0]) {
el.setAttribute(attrClick, "refresh") el.setAttribute(attrClick, "reload")
this.refresh() this.reload()
return return
} }

View File

@@ -1,7 +1,10 @@
module.exports = function(el) { module.exports = function(el) {
switch (el.tagName.toLowerCase()) { switch (el.tagName.toLowerCase()) {
case "a": case "a":
this.attachLink(el) // only attach link if el does not already have link attached
if (!el.hasAttribute('data-pjax-click-state')) {
this.attachLink(el)
}
break break
case "form": case "form":

6
lib/proto/refresh.js Normal file
View File

@@ -0,0 +1,6 @@
var parseDom = require("./parse-dom")
module.exports = function(el) {
parseDom(document);
}

View File

@@ -12091,8 +12091,8 @@ var linkAction = function(el, event) {
// dont do "nothing" if user try to reload the page by clicking the same link twice // dont do "nothing" if user try to reload the page by clicking the same link twice
if (el.href === window.location.href.split("#")[0]) { if (el.href === window.location.href.split("#")[0]) {
el.setAttribute(attrClick, "refresh") el.setAttribute(attrClick, "reload")
this.refresh() this.reload()
return return
} }
@@ -12409,8 +12409,8 @@ tape("test attach link prototype method", function(t) {
attachLink.call({ attachLink.call({
options: {}, options: {},
refresh: function() { reload: function() {
t.equal(a.getAttribute(attr), "refresh", "triggering exact same url refresh the page") t.equal(a.getAttribute(attr), "reload", "triggering exact same url reload the page")
}, },
loadUrl: function() { loadUrl: function() {
t.equal(a.getAttribute(attr), "load", "triggering a internal link actually load the page") t.equal(a.getAttribute(attr), "load", "triggering a internal link actually load the page")
@@ -12444,7 +12444,7 @@ tape("test attach link prototype method", function(t) {
a.href = internalUri a.href = internalUri
trigger(a, "click") trigger(a, "click")
// see refresh defined above // see reload defined above
a.href = window.location.protocol + "//" + window.location.host + "/internal" a.href = window.location.protocol + "//" + window.location.host + "/internal"
trigger(a, "click") trigger(a, "click")

View File

@@ -13,8 +13,8 @@ tape("test attach link prototype method", function(t) {
attachLink.call({ attachLink.call({
options: {}, options: {},
refresh: function() { reload: function() {
t.equal(a.getAttribute(attr), "refresh", "triggering exact same url refresh the page") t.equal(a.getAttribute(attr), "reload", "triggering exact same url reload the page")
}, },
loadUrl: function() { loadUrl: function() {
t.equal(a.getAttribute(attr), "load", "triggering a internal link actually load the page") t.equal(a.getAttribute(attr), "load", "triggering a internal link actually load the page")
@@ -48,7 +48,7 @@ tape("test attach link prototype method", function(t) {
a.href = internalUri a.href = internalUri
trigger(a, "click") trigger(a, "click")
// see refresh defined above // see reload defined above
a.href = window.location.protocol + "//" + window.location.host + "/internal" a.href = window.location.protocol + "//" + window.location.host + "/internal"
trigger(a, "click") trigger(a, "click")