のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,468,749人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレ+ JavaScript の質問用スレッド vol.143 +

    JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    301 : Name_Not - 2020/02/19(水) 18:39:06 ID:???.net (+70,+29,-1)
    >>299
    仕事の悩み相談スレを探せ
    302 : Name_Not - 2020/02/19(水) 22:21:10.00 ID:???.net (+68,+28,-20)
    >>298
    IEは昔からCSSの対応はそんなに悪くないぞ
    IE発のものも多いし
    303 : Name_Not - 2020/02/20(木) 01:13:35.39 ID:???.net (+45,+27,-13)
    ウェイ系行けよ
    304 : Name_Not - 2020/02/20(Thu) 08:21:04 ID:???.net (+13,-27,-12)
    >>299
    プログラマの雑談部屋 ★95
    http://medaka.5ch.net/test/read.cgi/prog/1582036051/
    305 : Name_Not - 2020/02/20(木) 14:26:04.22 ID:???.net (+2,-29,-44)
    >>293さんの投稿について、
    ブラウザプラグインで、
    cssのuser-select: none を抜くようなことができたらいいのに。
    あるかな?
    306 : Name_Not - 2020/02/20(Thu) 20:18:49 ID:???.net (-2,-30,-37)
    幾つかのイベントでトップレベルでstopImmediatePropagationする
    style*="user-select"を走査して外す
    それだけでも半分以上に効果がある
    307 : Name_Not - 2020/02/20(Thu) 22:44:18 ID:???.net (+56,-30,-167)
    jQuery で、すべての要素を巡回しながら、user-select: none; なら、auto に変更する。
    Chrome では、正常に動いた

    $( function ( ) {
    const user_selects = [ 'user-select', '-moz-user-select', '-webkit-user-select', '-ms-user-select' ];

    $( '*' ).each( function ( index, element ) {
    user_selects.forEach( elem => {
    that = $( this )
    if ( that.css( elem ) === 'none' ) { that.css( elem, 'auto' ) }
    } );
    } );
    } );
    308 : 307 - 2020/02/20(Thu) 22:49:23 ID:???.net (+5,-30,-27)
    >>307
    修正。上下が逆だった

    >user_selects.forEach( elem => {
    >that = $( this )

    that = $( this )
    user_selects.forEach( elem => {
    309 : Name_Not - 2020/02/21(金) 00:07:12.59 ID:???.net (+86,+29,-32)
    質問です
    classって名前空間に閉じ込めることはできないんですかね?

    他所のJS読んだときに
    安易な名前だとぶつかっちゃいそうな気がするんですが
    310 : Name_Not - 2020/02/21(金) 03:41:00.21 ID:U3BoPE0C.net (+28,+28,-10)
    >>307
    それをどうやって相手のWEBサーバーからのHTMLに組込めば良いの?
    311 : Name_Not - 2020/02/21(金) 07:11:09.76 ID:???.net (+81,+16,+1)
    >>309
    モジュールがあるでしょ
    312 : 307 - 2020/02/21(金) 17:14:59 ID:???.net (+3,-30,+0)
    Chrome のF12 開発者ツールのコンソールに、
    「ここから~ここまで」の行、つまり「$( function ( ) { } );」の内側だけをコピーして、Enter を押す

    これでエラーが出たら、そのページは、jQuery を使っていないから、
    以下のすべてをコピーして、Enter を押す。
    コードの内容は、head 内に、script タグを作って、Google のCDN から読み込んで実行する

    でも、ひょっとしたら、jQuery を使わなくても、出来るかも。
    素のJavaScript だけで、書けるかも知れない

    const script = document.createElement( "script" );
    script.setAttribute( "type","text/javascript" );
    script.setAttribute( "src","https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js" );

    document.head.appendChild( script );

    script.addEventListener( "load", function( ) {
    $( function ( ) {
    const user_selects = [ 'user-select', '-moz-user-select', '-webkit-user-select', '-ms-user-select' ]; // ここから
    $( '*' ).each( function ( index, element ) {
    that = $( this )
    user_selects.forEach( elem => {
    if ( that.css( elem ) === 'none' ) { that.css( elem, 'auto' ) }
    } );
    } ); // ここまで
    } );
    } );
    313 : Name_Not - 2020/02/21(金) 19:56:32.80 ID:???.net (+28,-30,-240)
    >>290のサイトの場合は
    TampermonkeyやViolentmonkey拡張等のユーザースクリプトで
    // ==UserScript==
    // @name englishplus選択右クリ
    // @matchhttp://www.englishplus.jp/*
    // @grant none
    // @run-at document-end
    // ==/UserScript==
    (function() {
    function un(e) { e.stopImmediatePropagation(); }
    document.addEventListener('selectstart', un, { capture: true });
    document.addEventListener('mousedown', un, { capture: true });
    document.addEventListener('contextmenu', un, { capture: true });
    document.head.insertAdjacentHTML('beforeend', `<style>
    * { user-select: initial !important; }
    </style>`);
    })();
    でおk
    314 : Name_Not - 2020/02/21(金) 21:02:10 ID:???.net (+57,+29,-6)
    どんなサイトで来るか分からんしブックマークレットにしたほうが賢いでしょ
    315 : 307 - 2020/02/21(金) 21:49:00 ID:???.net (+3,-30,-205)
    jQuery を使わず、素のJavaScript だけで書けた!

    Chrome のF12 開発者ツールのコンソールに、下のコードをコピーして、Enter を押す

    //ドキュメント全体から全ての要素を取得する
    const all_elements = document.getElementsByTagName( "*" );

    for ( let i = 0; i < all_elements.length; i++ ) {
    elem = all_elements[ i ];
    if ( window.getComputedStyle( elem ).userSelect === "none" ) {
    elem.style.userSelect = "auto";
    }
    }
    316 : Name_Not - 2020/02/22(土) 00:41:49.42 ID:???.net (+63,+29,+0)
    >>311
    なるほど…
    317 : Name_Not - 2020/02/22(土) 13:21:02.05 ID:???.net (+9,-29,-47)
    >>309
    React, Vue.js か忘れたけど、フレームワークでは、scoped CSS になっていた
    318 : Name_Not - 2020/02/22(土) 15:30:16.05 ID:???.net (+62,+29,-105)
    プログラミング初心者

    質問お願いします
    ブラウザの作業を自動化したいと考えてます。ググってみた結果
    現在pythonでSeleniumを使った方法を調べてますが、色々と苦戦しております。
    検索ワードでjsでもできそうなのですがそもそもプログラムに詳しい方からすると
    どちらの方法が好ましい(効率的とか簡単等)のでしょうか?
    因みに使用用途はダウンロードを繰り返すというものです。
    ひと昔前にあったダウンローダー等使えないサイトとなっております。
    宜しくお願いします。
    319 : Name_Not - 2020/02/22(土) 16:15:07.94 ID:???.net (+63,+30,-47)
    君自身が色々と調べて迷っているのに、
    たった数行の情報をここに書いて見た人が何か判断できると本気で思ってるのかい?
    せめてここのサイトのこのコンテンツをDLしたいですとか言ってくれないと
    可能性が無数にありすぎて何もわからないでしょ
    320 : Name_Not - 2020/02/22(土) 17:00:20.19 ID:???.net (+18,-29,-12)
    漏れは、スクレイピングに、Ruby, Selenium WebDriver, Nokogiri を使っている

    ブラウザの自動操作もできるし
    321 : 320 - 2020/02/22(土) 17:08:04.99 ID:???.net (+3,-30,-52)
    【VBScript】WSHについて話し合うスレ【JScript】
    http://mevius.5ch.net/test/read.cgi/tech/1578522041/27

    ここに書いたように、Ruby, Selenium WebDriver で、
    ブラウザを自動操作して、Yahoo に自動ログインしてる

    ユーザー名を入力して、ボタンを押す。
    パスワードを入力して、ボタンを押す
    322 : 320 - 2020/02/22(土) 17:12:48.55 ID:???.net (+3,-30,-118)
    ダウンロードには、wget, curl を使う

    それよりも複雑なものには、漏れは、Ruby, Selenium WebDriver, Nokogiri を使うけど、
    各サイトの解析が大変

    例えば、5ch の投稿から画像ファイルだけを探すのに、
    「div.message a」内のURL で、拡張子が「png jpg jpeg gif」のものだけを絞り込むとか、
    こういう処理を、Ruby以外で書くのは辛い

    Rubyは、可読性が高いから良いけど
    323 : Name_Not - 2020/02/22(土) 17:39:49.88 ID:???.net (-2,-30,-15)
    javascriptでやるにしてもユーザースクリプトやブラウザ拡張、Node.js+Selenium、Electron等いろいろ方法はあるわけで
    324 : Name_Not - 2020/02/22(土) 17:59:14.09 ID:???.net (+57,+29,-30)
    場合によってはコンソールに打ち込んでもいいだろうしな
    325 : Name_Not - 2020/02/22(土) 18:21:29.17 ID:???.net (+61,+29,-5)
    >>313
    面白そうで試してみたいけど、
    どう使えばいいの?
    326 : Name_Not - 2020/02/22(土) 18:24:26.43 ID:???.net (+29,-29,-23)
    ググレカス
    .user.jsにして拡張機能ページにDnDするだけだろポンコツ
    327 : Name_Not - 2020/02/22(土) 21:59:56 ID:???.net (+56,+25,-1)
    >>326
    ありがとう、そのキーワードでググってみるよ
    328 : Name_Not - 2020/02/22(土) 22:40:57.62 ID:???.net (-1,-29,-8)
    わざわざファイルにせんでもユーザースクリプト拡張で新規作成選んでコピペするだけでしょ
    329 : Name_Not - 2020/02/23(日) 14:02:07.76 ID:???.net (+57,+29,-3)
    わざわざ拡張入れなくてもファイル1つ作るだけでしょ
    330 : Name_Not - 2020/02/23(日) 16:48:07.81 ID:???.net (+25,+3,-47)
    これ系は昔からブックマークレットで無効にしてたわ
    >>290のサイトも試したがもちろん解除できる

    この程度でjQueryを使う必要性も無いし、ユーザースクリプトやブラウザ拡張も不要
    331 : Name_Not - 2020/02/24(月) 09:54:18 ID:???.net (+57,+29,-48)
    こういう直前の1,2レスしか頭に入らないやつをどうにかしてほしい
    ブックマークレットの話は十分に出たからそれ以外の解決例をオマケで話してるんだろうが
    頭悪すぎ
    334 : Name_Not - 2020/02/29(土) 14:28:18 ID:???.net (+48,-30,-121)
    セミコロンの有無について質問です。

    const half =(number) => {
    return number / 2;
    };
    ―――――――――――――――
    If (条件式) {
    処理
    }



    関数を定義する時は }; とするのに、
    If文などでは }の後にセミコロンを付けないのはなぜですか?
    335 : Name_Not - 2020/02/29(土) 15:22:59 ID:???.net (+57,+29,-65)
    ifは式じゃないから…というのはCの時代からの構文解析の決まりだな

    と言ってもJSはそもそもセミコロン不要だから
    本当に飾りみたいなもんだろう
    336 : Name_Not - 2020/02/29(土) 16:06:58.86 ID:???.net (+9,-19,-15)
    >>334
    blockはセミコロンを付けない構文
    337 : Name_Not - 2020/02/29(土) 17:20:09.16 ID:???.net (+55,+27,-9)
    ありがとうございました!
    ブロックという概念があるんですね。
    progateでそこら辺のこと書いてなかったんで。
    調べてみます!
    338 : Name_Not - 2020/02/29(土) 19:53:09 ID:???.net (+16,-30,-218)
    ajaxについての質問です。
    動画サイトにて、下記のように事前に用意した変数を
    POSTで送信する場合に、プロパティ名に変数と同名を利用していました。
    値のanswerが変数のanswerを参照するのは理解できるのですが、
    プロパティのanswerは変数のanswerを参照してしまったりしないのでしょうか?
    ajaxの送信する構文の中ではプロパティ名は参照しない…的な仕様なのでしょうか?

    ...
    var answer = $selected.text();
    $.post('test.php', {
      answer: answer
    })
    ...
    339 : Name_Not - 2020/02/29(土) 20:16:42.47 ID:???.net (+31,-30,-61)
    ajaxに限らずオブジェクト初期化子の裸のキーは変数展開されない
    es2015以降であれば
    {
     [answer]: answer,
    }
    のようにブラケットで囲むことで変数や計算結果をキーにできる
    340 : Name_Not - 2020/02/29(土) 20:16:49.87 ID:???.net (+69,+29,-44)
    >>334
    関数を定義するなども;は必須ではない、つけないスタイルもある
    ただ特定の場合で次の行と結合するので、そこを気にしたくないのであれば;を無駄につけるというだけ
    一方if文などは次の行と結合しないことがわかりやすいのでつけない人が多い
    要するに気分や感覚の問題
    341 : Name_Not - 2020/02/29(土) 20:22:36.99 ID:???.net (+26,-30,-77)
    >>338
    http://tc39.es/ecma262/#sec-object-initializer-runtime-semantics-evaluation
    LiteralPropertyName:IdentifierName
    Return StringValue of IdentifierName.
    評価はされない
    342 : Name_Not - 2020/03/01(日) 10:12:08.14 ID:???.net (+63,+29,-32)
    >>339
    ありがとうございます。
    いろんな言語の当たり前の仕様だったのですね。
    すっきりしました。

    >>341
    すみません。
    翻訳しましたが、よくわかりませんでした…
    343 : Name_Not - 2020/03/01(日) 12:38:18 ID:???.net (+9,-30,+0)
    >>341
    ESの仕様書は英語としては難しいものではなく、
    withだのofだのandだの小学校レベルの前置詞や接続詞さえ分かればほとんど読める
    あとちょこちょこ出てくる単語はプログラミング用語だと思って暗記する
    そして根気よく順を追ってゆっくり読んでいく力さえあればいい

    まず構文の定義の見方
    obj = { key: value } とあったら
    http://tc39.es/ecma262/#sec-object-initializer  の「Syntax」の所を見て
    ObjectLiteral: { PropertyDefinitionList } から key: value がPropertyDefinitionListに当たるでしょ
    PropertyDefinitionListのとこをクリックすれば更に定義に飛んで、PropertyDefinitionをカンマ「,」で区切ったものということが分かり、
    PropertyDefinitionは4種類あるけど今回はPropertyName: AssignmentExpressionの形でしょ
    つまりkeyはPropertyNameってことで、PropertyNameのどちらに当たるかというと
    ComputedPropertyNameは[prop]の記法だから、そちらではない方でkeyがLiteralPropertyNameということが分かった
    そしてその中でも、文字列リテラルでも数値リテラルでもないのでIdentifierNameということがわかる
    345 : Name_Not - 2020/03/01(日) 12:40:30 ID:???.net (+12,-30,+0)
    >>341
    1.Let obj be OrdinaryObjectCreate(%Object.prototype%).
    Let X be YとはXをYとおく、つまるところX = Yということ
    OrdinaryObjectCreate(%Object.prototype%)はプロトタイプをObject.prototypeとした一般オブジェクトを作る処理
    プロトタイプをObject.prototypeとした一般オブジェクトとはつまるところ「 { } 」のこと
    つまり obj = { } ということ

    2.Perform ? PropertyDefinitionEvaluation of PropertyDefinitionList with arguments obj and true.
    Performとは実行すること、PropertyDefinitionList のPropertyDefinitionEvaluationという処理を、1.のobjとtrueを引数として渡して実行
    つまり PropertyDefinitionList.PropertyDefinitionEvaluation( obj, true ) ということ
    Performの後の?はReturnIfAbrupt処理の省略記法
    JSの内部的には何か処理をするたびに、渡された値が期待したものでなかった場合など、エラーが起こりうる
    しかし、内部処理を途中で中断することは、エンジンのハングアップや強制終了を意味するのでそれはできない
    正しい処理ができたときは、正しい値を普通に返すのと同じく、問題が起きたら問題が起きたという値を返さないといけない
    それを判断しているのがReturnIfAbruptであって、正しい処理なら次へ進み、そうでなければ例外を呼び出し元へ返す

    つまり、3.Return obj.と合わせるとこういうこと
    try {
    PropertyDefinitionList.PropertyDefinitionEvaluation( obj, true )
    }
    return obj
    346 : Name_Not - 2020/03/01(日) 12:41:52 ID:???.net (+6,-30,+0)
    >>341
    こういう感じで読んで行けばよい、次に
    PropertyDefinitionEvaluationではまず
    PropertyDefinitionList:PropertyDefinitionList,PropertyDefinition
    が評価されて、カンマで区切られた各プロパティ定義が再評価される、次に
    PropertyDefinition:PropertyName:AssignmentExpression
    1.Let propKey be the result of evaluating PropertyName.
    evaluatingとは評価することで、つまり propKey = PropertyNameの評価
    今回はPropertyNameの中でもLiteralPropertyName、その中でもIdentifierNameということが分かっているから、
    LiteralPropertyName:IdentifierNameをみて、1.Return StringValue of IdentifierName.
    つまり、IdentifierNameの文字列を返すことがわかる

    慣れてくるとこの時点でもう先を見る必要はない
    もし{key:value}ではなく{'key':value}だった場合は'key'はIdentifierNameではなくStringLiteralになるわけだが、その処理は
    1.Return the String value whose code units are the SV of StringLiteral.
    つまりその文字列を返すということがわかる
    なのでこういう整然とした積み重ねロジックで普通に考えるとこの先の処理で何か違うことが起こるとは考えにくいので
    {key:value}と{'key':value}は同じということが予想できる
    勿論先に進んでpropKeyがどのように扱われているかを見ていってもよい

    ざっくり言うとこういう感じでESの仕様書は読める
    347 : Name_Not - 2020/03/01(日) 12:46:05 ID:???.net (+4,-30,-67)
    >>345 に間違いがあった

    try {
      PropertyDefinitionList.PropertyDefinitionEvaluation( obj, true )
    } catch ( err ) {
      return err
    }
    return obj

    のイメージが正しい
    348 : Name_Not - 2020/03/01(日) 19:07:03 ID:W4sArTyK.net (-11,+3,-1)
    長いw
    349 : Name_Not - 2020/03/01(日) 23:15:05 ID:???.net (+5,-30,-168)
    >>338
    例えば、そのオブジェクトと、
    そのオブジェクト内のプロパティーのキーが同じ名前でも、区別がつく

    let obj = { obj: 1, a:2 }

    オブジェクトそのもの
    console.log( obj ) //=> { obj: 1, a:2 }

    オブジェクトの各プロパティー
    console.log( obj.obj ) //=> 1
    console.log( obj.a ) //=> 2
    350 : Name_Not - 2020/03/01(日) 23:47:58 ID:???.net (+29,+1,-16)
    オブジェクトに名前はない
    名前があるのは関数
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について