31940


現在jqueryを使用してブラウザアプリを開発しているのですが。  
ブラウザの機能としてCtrl+マウスホイールで拡大縮小ができると思います。(chromeやIE)  
これをボタンに置き換えたいと思っています。  
例えば"+"ボタンを配置し、これが押されたらあたかも[Ctrl+マウスホイール奥へ一回コロコロ]がされたとブラウザに認識させたいのです。  
cssを使い $("html").css("zoom", "90%");などのやり方も発見したのですが、  
これでは不都合になってしまったため質問しました。

このように実際にその操作はしていなくても[ctrlボタンが押された]や[マウスホイールが動かされた]という動作を意図的に行うことはできるのでしょうか？

詳しい方いましたらご教授お願い致します。


CC BY-SA 3.0
2017-01-18T04:16:35.853
31934
2017-01-18T08:41:11.843
20198
question
javascript jquery
キーイベントやマウスクリックイベントの疑似的発火について


> cssを使い $("html").css("zoom", "90%");などのやり方も発見したのですが、  
>  これでは不都合になってしまったため質問しました。

具体的にはどのような不都合が生じたのでしょうか。

[Ctrl] + [+] によるページズームをCSS/JavaScriptから直接操作する手段はおそらく用意されていないと思います。  
この機能は目の不自由なユーザがページ拡大して読みやすくしたり、逆に大きすぎる文字を小さくする事で視認性を上げたり、とユーザのためにある機能です。  
この機能をWeb製作者がコントロールできるとユーザの意図しないところでページ拡大率を変動させる事が可能になってしまいます。  
(@user20198 さんにその意図がなくてもそのように実装できてしまう事が問題です。)


CC BY-SA 3.0
2017-01-18T07:09:32.633
31940
2017-01-18T07:09:32.633
20262
31934
answer


<https://stackoverflow.com/questions/10455626/keydown-simulation-in-chrome-
fires-normally-but-not-the-correct-key>  
こちらのEntryを参考にCtrl+＋を発行してみて  
onkeypress内にてctrlがtrueになっている43(+キーのはず)のイベントが来ることは確認しましたが、  
Zoomは発生しませんでしたね・・・

[code]

    var oEvent = document.createEvent('KeyboardEvent');
    
    // Chromium Hack
    Object.defineProperty(oEvent, 'keyCode', {
                get : function() {
                    return this.keyCodeVal;
                }
    });     
    Object.defineProperty(oEvent, 'which', {
                get : function() {
                    return this.keyCodeVal;
                }
    });
    
    oEvent.initKeyboardEvent("keypress", true, true, document.defaultView, false, false, true, false, 43, 43);
    
    oEvent.keyCodeVal = 43;
    
    document.dispatchEvent(oEvent);
    
[/code]

送り先のelementがdocumentになっているのでブラウザに割り当てられた機能としては働かない気がします。


CC BY-SA 3.0
2017-01-18T08:41:11.843
31942
2017-01-18T08:41:11.843
2017-05-23T12:38:56.083
-1
19716
31934
answer