繁体   English   中英

使用bookmarklet更改文本框大小

[英]Change the text box size using bookmarklet

表单文本区域大小调整器是一个书签,可让用户更改文本区域的大小。 例如

javascript: (function() {
    var i, x;
    for (i = 0; x = document.getElementsByTagName("textarea")[i]; ++i) x.rows += 5;
})()

但是我正在寻找一个允许我更改文本框大小的书签。 例如, 在下一页上,我想增加名称和电子邮件输入框的大小。

据我所知,没有办法做到这一点。 一个可以使用CSS resize:both; overflow: auto; resize:both; overflow: auto; ,但这似乎不适用于各种浏览器。 (也许我做错了 )。

一种方法是用脏副本替换所有输入字段,但这似乎是破坏现有脚本(本机页面等)的一种选择。 例如,该元素将不再是“文本”类型,并且如果本机脚本依赖于此,则该元素将损坏。 事件监听器将被破坏,等等。

无论如何,如果仍然愿意,快速的初稿可能是这样的

(function() {
    var x, n, i = 0,
        t = document.createElement('TEXTAREA');
    t.rows = 3;
    while ((x = document.getElementsByTagName('INPUT')[i])) {
        if (x.type === "text") {
            n = x.parentNode.insertBefore(t.cloneNode(), x);
            x.parentNode.removeChild(x); 
            n.id = x.id;   
            n.name = x.name;
            n.innerText = x.value;
        } else { 
            ++i;   
        }
    }
})();

或作为书签:

javascript:(function(){var x,n,i=0,t=document.createElement("TEXTAREA");t.rows=3;while((x=document.getElementsByTagName("INPUT")[i]))if(x.type==="text"){n=x.parentNode.insertBefore(t.cloneNode(),x);x.parentNode.removeChild(x);n.id=x.id;n.name=x.name;n.innerText=x.value}else++i})();

这以我想要的方式更改了输入字段:

javascript:(function(){var%20i,x;%20for(i=0;x=document.getElementsByTagName("INPUT")[i];++i)%20x.size%20+=%2035;%20})()

我认为您采用的方式并不是最好的方式。 您的bookmarklet函数应调用一些外部JavaScript,并将所有逻辑放入该脚本中。 在这种情况下,调试脚本对您来说应该更容易。

考虑以下示例代码:

<a href="javascript:(function(){  script=document.createElement('SCRIPT');script.src='http://path/to/your/JS';document.body.appendChild(script);})()"> This is a sample bookmarklet </a>

因此,现在包含的全局JS文件应包含JS和所有逻辑。 完成后,请使用插件执行上述步骤。 这次在所需位置插入断点以调试代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM