UNPKG

polyfill-service

Version:
1 lines 4.24 kB
{"aliases":["caniuse:input-placeholder","modernizr:placeholder"],"browsers":{"ie":"8 - 9"},"dependencies":["Object.defineProperty","document.querySelector","Element"],"baseDir":"Element/prototype/placeholder","hasTests":false,"rawSource":"\n// Element.prototype.placeholder\nObject.defineProperty(Element.prototype, 'placeholder', {\n\tget: function() {\n\t\treturn this.getAttribute('placeholder');\n\t},\n\n\tset: function (value) {\n\t\tif (!value || !/^(input|textarea)$/i.test(this.nodeName) || !/^(email|number|password|search|tel|text|url|)$/i.test(this.getAttribute('type'))) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar\n\t\telement = this,\n\t\txInput = document.createElement('ms-input'),\n\t\txPlaceholder = xInput.appendChild(document.createElement('ms-placeholder')),\n\t\txInputRuntimeStyle = xInput.runtimeStyle,\n\t\txPlaceholderRuntimeStyle = xPlaceholder.runtimeStyle,\n\t\telementCurrentStyle = element.currentStyle;\n\n\t\txPlaceholder.appendChild(document.createTextNode(value));\n\n\t\txInputRuntimeStyle.display = 'inline-block';\n\t\txInputRuntimeStyle.fontSize = elementCurrentStyle.fontSize;\n\t\txInputRuntimeStyle.margin = elementCurrentStyle.margin;\n\t\txInputRuntimeStyle.width = elementCurrentStyle.width;\n\n\t\telement.parentNode.insertBefore(xInput, element).appendChild(element);\n\n\t\txPlaceholderRuntimeStyle.backgroundColor = 'transparent';\n\t\txPlaceholderRuntimeStyle.fontFamily = elementCurrentStyle.fontFamily;\n\t\txPlaceholderRuntimeStyle.fontSize = elementCurrentStyle.fontSize;\n\t\txPlaceholderRuntimeStyle.margin = '2px 0 0 2px';\n\t\txPlaceholderRuntimeStyle.padding = elementCurrentStyle.padding;\n\t\txPlaceholderRuntimeStyle.position = 'absolute';\n\t\txPlaceholderRuntimeStyle.display = element.value ? 'none' : 'inline-block';\n\n\t\telement.runtimeStyle.margin = '0';\n\n\t\txPlaceholder.attachEvent('onclick', function () {\n\t\t\telement.focus();\n\t\t});\n\n\t\telement.attachEvent('onkeypress', function () {\n\t\t\txPlaceholderRuntimeStyle.display = 'none';\n\t\t});\n\n\t\telement.attachEvent('onkeyup', function () {\n\t\t\txPlaceholderRuntimeStyle.display = element.value ? 'none' : 'inline-block';\n\t\t});\n\n\t\tObject.defineProperty(element, 'placeholder', {\n\t\t\tget: function () {\n\t\t\t\treturn xPlaceholder.innerHTML;\n\t\t\t},\n\t\t\tset: function (value) {\n\t\t\t\txPlaceholder.innerHTML = value;\n\t\t\t}\n\t\t});\n\t}\n});\n\ndocument.attachEvent('onreadystatechange', function () {\n\tif (document.readyState === 'complete') {\n\t\tfor (var elements = document.querySelectorAll('input,textarea'), index = 0, length = elements.length; index < length; ++index) {\n\t\t\tif (elements[index].placeholder) {\n\t\t\t\telements[index].placeholder = elements[index].placeholder;\n\t\t\t}\n\t\t}\n\t}\n});\n","minSource":"Object.defineProperty(Element.prototype,\"placeholder\",{get:function(){return this.getAttribute(\"placeholder\")},set:function(e){if(e&&/^(input|textarea)$/i.test(this.nodeName)&&/^(email|number|password|search|tel|text|url|)$/i.test(this.getAttribute(\"type\"))){var t=this,n=document.createElement(\"ms-input\"),i=n.appendChild(document.createElement(\"ms-placeholder\")),o=n.runtimeStyle,a=i.runtimeStyle,r=t.currentStyle;i.appendChild(document.createTextNode(e)),o.display=\"inline-block\",o.fontSize=r.fontSize,o.margin=r.margin,o.width=r.width,t.parentNode.insertBefore(n,t).appendChild(t),a.backgroundColor=\"transparent\",a.fontFamily=r.fontFamily,a.fontSize=r.fontSize,a.margin=\"2px 0 0 2px\",a.padding=r.padding,a.position=\"absolute\",a.display=t.value?\"none\":\"inline-block\",t.runtimeStyle.margin=\"0\",i.attachEvent(\"onclick\",function(){t.focus()}),t.attachEvent(\"onkeypress\",function(){a.display=\"none\"}),t.attachEvent(\"onkeyup\",function(){a.display=t.value?\"none\":\"inline-block\"}),Object.defineProperty(t,\"placeholder\",{get:function(){return i.innerHTML},set:function(e){i.innerHTML=e}})}}}),document.attachEvent(\"onreadystatechange\",function(){if(\"complete\"===document.readyState)for(var e=document.querySelectorAll(\"input,textarea\"),t=0,n=e.length;n>t;++t)e[t].placeholder&&(e[t].placeholder=e[t].placeholder)});","detectSource":"'document' in this && \"placeholder\" in document.createElement(\"input\")"}