簡體   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