HTML / Javascript Resizer小工具在Chrome中无法正常运行

mathheadinclouds

仅使用原始JavaScript,不使用jQuery或其他库。

通过模拟textarea元素的行为,编写了一个小工具来设置某些元素的宽度和高度。

调整小工具的屏幕截图

单击右下角的灰色方块,光标变为“东南”光标,同时按住鼠标左键可以调整大小,放开鼠标时调整大小;就像textarea一样。这是示例代码;大小可调整的内容是带有div:scroll;的div;但目标是它可以与任何东西配合使用(我打算将其与iframe一起使用。)

<!DOCTYPE html><html lang="en"><head>

<meta charset="utf-8">
<title>resize test</title>

<style>
    table.resizerTable {
        border-spacing  : 0;
        border-collapse : separate;
    }
    table.resizerTable td { padding: 0; }
    table.resizerTable div.resizer {
        width  : 20px;
        height : 20px;
        cursor : se-resize;
        background-color: #bbb;
    }
    table.resizerTable div.resizer:active {
        background-color: red;
    }
    div#resizee {
        overflow: scroll
    }
</style>

<script type="text/javascript">
var resizee = {
    getWidth: function(){
        return parseFloat(document.getElementById("resizee").style.width);
    },
    getHeight: function(){
        return parseFloat(document.getElementById("resizee").style.height);
    },
    setWidth: function(w){
        document.getElementById("resizee").style.width = w + 'px';
    },
    setHeight: function(h){
        document.getElementById("resizee").style.height = h + 'px';
    },
};
var resizer = {
    start : null,
    mousedown: function(elt, evt){
        var mainButtonDown = !!(evt.buttons % 2);
        if (!mainButtonDown) return;
        this.start = {
            x      : evt.clientX,
            y      : evt.clientY,
            width  : resizee.getWidth(),
            height : resizee.getHeight()
        };
    }
};
function mousemove(evt){
    var mainButtonDown = !!(evt.buttons % 2);
    if (mainButtonDown){
        var start = resizer.start;
        if (start){
            var x      = evt.clientX,
                y      = evt.clientY,
                dx     = x - start.x,
                dy     = y - start.y,
                width  = start.width  + dx,
                height = start.height + dy;
            resizee.setWidth(width);
            resizee.setHeight(height);
        } else {
        }
    } else {
        resizer.start = null;
    }
    //var compSty = getComputedStyle(evt.target);
}
function mouseup(){
    resizer.start = null;
}
function bodyOnload(){
    document.addEventListener('mousemove', mousemove);
    document.addEventListener('mouseup', mouseup);
    resizee.setWidth(300);
    resizee.setHeight(150);
}
</script>

</head><body onload="bodyOnload();">

<table class="resizerTable">
    <tr>
        <td>
            <div id="resizee">
                <fieldset>
                    <legend>legend title</legend>
                    <fieldset>
                        <legend>inner legend title</legend>
                        lorem ipsum dolor sit amet consectetur adipiscing elit
                    </fieldset>
                    <ul><li>foo</li><li>bar</li><li>blah blah</li><li>kvatsh</li><li>one</li><li>zwei</li><li>cinque</li></ul>
                </fieldset>
            </div>
        </td>
        <td></td>
    </tr>
    <tr>
        <td></td>
        <td>
            <div onmousedown="resizer.mousedown(this, event)" id="resizer" class="resizer"></div>
        </td>
    </tr>
</table>

<div></div>

</body></html>

它在Firefox和IE中可以正常工作,但只能在Chrome中间歇地使用。(尚未在Safari中测试)。

这是在Chrome中发生的情况:向下滑动手柄并猛烈地拉动它。这样做5次左右。在某个时候,它将停止工作,并且光标将变成这样的内容

没有下降

如果您再次单击该手柄而不移动,它将恢复工作,但是如果猛拉,则将再次停止工作。无论我尝试了多少,我都无法在FF或IE上获得此行为。

这是什么?我的代码中有错误吗?如果Chrome浏览器支持某些功能,可以解决该问题吗?

对于复制和粘贴代码的UPDATE:您需要控制负宽度/高度。

叫喊

尝试调整大小时,您可能会选择.resizer,可以将user-select: none样式设置.resizer为避免被选中:

table.resizerTable {
    border-spacing  : 0;
    border-collapse : separate;
    user-select: none;
}

<!DOCTYPE html><html lang="en"><head>

<meta charset="utf-8">
<title>resize test</title>

<style>
    table.resizerTable {
        border-spacing  : 0;
        border-collapse : separate;
        user-select: none;
    }
    table.resizerTable td { padding: 0; }
    table.resizerTable div.resizer {
        width  : 20px;
        height : 20px;
        cursor : se-resize;
        background-color: #bbb;
    }
    table.resizerTable div.resizer:active {
        background-color: red;
    }
    div#resizee {
        overflow: scroll;
    }
</style>

<script type="text/javascript">
var resizee = {
    getWidth: function(){
        return parseFloat(document.getElementById("resizee").style.width);
    },
    getHeight: function(){
        return parseFloat(document.getElementById("resizee").style.height);
    },
    setWidth: function(w){
        document.getElementById("resizee").style.width = w + 'px';
    },
    setHeight: function(h){
        document.getElementById("resizee").style.height = h + 'px';
    },
};
var resizer = {
    start : null,
    mousedown: function(elt, evt){
        var mainButtonDown = !!(evt.buttons % 2);
        if (!mainButtonDown) return;
        this.start = {
            x      : evt.clientX,
            y      : evt.clientY,
            width  : resizee.getWidth(),
            height : resizee.getHeight()
        };
    }
};
function mousemove(evt){
    var mainButtonDown = !!(evt.buttons % 2);
    if (mainButtonDown){
        var start = resizer.start;
        if (start){
            var x      = evt.clientX,
                y      = evt.clientY,
                dx     = x - start.x,
                dy     = y - start.y,
                width  = start.width  + dx,
                height = start.height + dy;
            resizee.setWidth(width);
            resizee.setHeight(height);
        } else {
        }
    } else {
        resizer.start = null;
    }
    //var compSty = getComputedStyle(evt.target);
}
function mouseup(){
    resizer.start = null;
}
function bodyOnload(){
    document.addEventListener('mousemove', mousemove);
    document.addEventListener('mouseup', mouseup);
    resizee.setWidth(300);
    resizee.setHeight(150);
}
</script>

</head><body onload="bodyOnload();">

<table class="resizerTable">
    <tr>
        <td>
            <div id="resizee">
                <fieldset>
                    <legend>legend title</legend>
                    <fieldset>
                        <legend>inner legend title</legend>
                        lorem ipsum dolor sit amet consectetur adipiscing elit
                    </fieldset>
                    <ul><li>foo</li><li>bar</li><li>blah blah</li><li>kvatsh</li><li>one</li><li>zwei</li><li>cinque</li></ul>
                </fieldset>
            </div>
        </td>
        <td></td>
    </tr>
    <tr>
        <td></td>
        <td>
            <div onmousedown="resizer.mousedown(this, event)" id="resizer" class="resizer"></div>
        </td>
    </tr>
</table>

<div></div>

</body></html>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JQuery:添加到 Blogger HTML/Javascript 小工具时代码未运行

来自分类Dev

Google小工具JavaScript无法正常工作

来自分类Dev

HTML和JavaScript无法正常运行

来自分类Dev

Javascript无法正常运行,但在放置断点并从chrome调试器工具中单击文件时可以正常工作

来自分类Dev

Javascript无法正常运行,但在放置断点并从chrome调试器工具中单击文件时可以正常工作

来自分类Dev

HTML javascript无法正常工作

来自分类Dev

不了解为什么此代码在Google Sites HTML Box小工具中不起作用

来自分类Dev

我最近更新了博客,此后,我的某些Javascript小工具在我的blogspot / blogger网站中不起作用

来自分类Dev

JavaScript无法正常运行?(忽略我当前的html值)

来自分类Dev

HTML / JavaScript内联验证无法完全正常运行

来自分类Dev

Javascript未在HTML中运行

来自分类Dev

无法从HTML调用JavaScript

来自分类Dev

HTML和JavaScript中的生活游戏无法正常工作

来自分类Dev

HTML,CSS,JavaScript中的图库无法正常工作

来自分类Dev

在HTML中更改div位置时,JavaScript无法正常工作

来自分类Dev

HTML编码的Javascript无法正常工作

来自分类Dev

在HTML中混合Javascript

来自分类Dev

href html中的javascript

来自分类Dev

在HTML中包含JavaScript

来自分类Dev

html / javascript中的Listview

来自分类Dev

Javascript 中的 Html 克隆

来自分类Dev

JavaScript 中的 HTML 标签

来自分类Dev

Chrome Webstore列表中的Gmail小工具+ Appscript权限

来自分类Dev

在工具提示Javascript中插入HTML

来自分类常见问题

使用JavaScript将html表数据导出到Excel / jQuery在chrome浏览器中无法正常工作

来自分类Dev

HTML无法识别JavaScript(Chrome扩展程序)

来自分类Dev

JavaScript无法在PHP加载的HTML上运行

来自分类Dev

Javascript无法在我的HTML页面上运行

来自分类Dev

为什么我的Javascript无法在WordPress上运行,但是在本地HTML上可以正常运行?

Related 相关文章

  1. 1

    JQuery:添加到 Blogger HTML/Javascript 小工具时代码未运行

  2. 2

    Google小工具JavaScript无法正常工作

  3. 3

    HTML和JavaScript无法正常运行

  4. 4

    Javascript无法正常运行,但在放置断点并从chrome调试器工具中单击文件时可以正常工作

  5. 5

    Javascript无法正常运行,但在放置断点并从chrome调试器工具中单击文件时可以正常工作

  6. 6

    HTML javascript无法正常工作

  7. 7

    不了解为什么此代码在Google Sites HTML Box小工具中不起作用

  8. 8

    我最近更新了博客,此后,我的某些Javascript小工具在我的blogspot / blogger网站中不起作用

  9. 9

    JavaScript无法正常运行?(忽略我当前的html值)

  10. 10

    HTML / JavaScript内联验证无法完全正常运行

  11. 11

    Javascript未在HTML中运行

  12. 12

    无法从HTML调用JavaScript

  13. 13

    HTML和JavaScript中的生活游戏无法正常工作

  14. 14

    HTML,CSS,JavaScript中的图库无法正常工作

  15. 15

    在HTML中更改div位置时,JavaScript无法正常工作

  16. 16

    HTML编码的Javascript无法正常工作

  17. 17

    在HTML中混合Javascript

  18. 18

    href html中的javascript

  19. 19

    在HTML中包含JavaScript

  20. 20

    html / javascript中的Listview

  21. 21

    Javascript 中的 Html 克隆

  22. 22

    JavaScript 中的 HTML 标签

  23. 23

    Chrome Webstore列表中的Gmail小工具+ Appscript权限

  24. 24

    在工具提示Javascript中插入HTML

  25. 25

    使用JavaScript将html表数据导出到Excel / jQuery在chrome浏览器中无法正常工作

  26. 26

    HTML无法识别JavaScript(Chrome扩展程序)

  27. 27

    JavaScript无法在PHP加载的HTML上运行

  28. 28

    Javascript无法在我的HTML页面上运行

  29. 29

    为什么我的Javascript无法在WordPress上运行,但是在本地HTML上可以正常运行?

热门标签

归档