Chris@0: {% autoescape 'js' %} Chris@0: (function (xpath) { Chris@0: function getElement(xpath) { Chris@0: var polterAgent = window.__poltergeist; Chris@0: var ids = polterAgent.find("xpath", xpath, document); Chris@0: var polterNode = polterAgent.get(ids[0]); Chris@0: return polterNode.element; Chris@0: } Chris@0: Chris@0: function inputRadioGetValue(element){ Chris@0: var value = null; Chris@0: var name = element.getAttribute('name'); Chris@0: if (!name){ Chris@0: return null; Chris@0: } Chris@0: var fields = window.document.getElementsByName(name); Chris@0: var i; Chris@0: var l = fields.length; Chris@0: for (i = 0; i < l; i++) { Chris@0: var field = fields.item(i); Chris@0: if (field.form === element.form && field.checked) { Chris@0: return field.value; Chris@0: } Chris@0: } Chris@0: return null; Chris@0: } Chris@0: Chris@0: var node = getElement(xpath); Chris@0: var tagName = node.tagName.toLowerCase(); Chris@0: var value = null; Chris@0: if (tagName == "input") { Chris@0: var type = node.type.toLowerCase(); Chris@0: if (type == "checkbox") { Chris@0: value = node.checked ? node.value : null; Chris@0: } else if (type == "radio") { Chris@0: value = inputRadioGetValue(node); Chris@0: } else { Chris@0: value = node.value; Chris@0: } Chris@0: } else if (tagName == "textarea") { Chris@0: value = node.value; Chris@0: } else if (tagName == "select") { Chris@0: if (node.multiple) { Chris@0: value = []; Chris@0: for (var i = 0; i < node.options.length; i++) { Chris@0: if (node.options[i].selected) { Chris@0: value.push(node.options[i].value); Chris@0: } Chris@0: } Chris@0: } else { Chris@0: var idx = node.selectedIndex; Chris@0: if (idx >= 0) { Chris@0: value = node.options.item(idx).value; Chris@0: } else { Chris@0: value = null; Chris@0: } Chris@0: } Chris@0: } else { Chris@0: value = node.value; Chris@0: } Chris@0: return value; Chris@0: }('{{ xpath }}')); Chris@0: {% endautoescape %}