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

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

JavaScript覧 / PC版 /
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

301 = :

>>299
仕事の悩み相談スレを探せ

302 = :

>>298
IEは昔からCSSの対応はそんなに悪くないぞ
IE発のものも多いし

303 = :

ウェイ系行けよ

304 = :

>>299
プログラマの雑談部屋 ★95
http://medaka.5ch.net/test/read.cgi/prog/1582036051/

305 = :

>>293さんの投稿について、
ブラウザプラグインで、
cssのuser-select: none を抜くようなことができたらいいのに。
あるかな?

307 = :

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
修正。上下が逆だった

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

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

309 = :

質問です
classって名前空間に閉じ込めることはできないんですかね?

他所のJS読んだときに
安易な名前だとぶつかっちゃいそうな気がするんですが

310 :

>>307
それをどうやって相手のWEBサーバーからのHTMLに組込めば良いの?

311 = :

>>309
モジュールがあるでしょ

312 = :

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 = :

>>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 = :

どんなサイトで来るか分からんしブックマークレットにしたほうが賢いでしょ

315 = :

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 = :

>>311
なるほど…

317 = :

>>309
React, Vue.js か忘れたけど、フレームワークでは、scoped CSS になっていた

318 = :

プログラミング初心者

質問お願いします
ブラウザの作業を自動化したいと考えてます。ググってみた結果
現在pythonでSeleniumを使った方法を調べてますが、色々と苦戦しております。
検索ワードでjsでもできそうなのですがそもそもプログラムに詳しい方からすると
どちらの方法が好ましい(効率的とか簡単等)のでしょうか?
因みに使用用途はダウンロードを繰り返すというものです。
ひと昔前にあったダウンローダー等使えないサイトとなっております。
宜しくお願いします。

319 = :

君自身が色々と調べて迷っているのに、
たった数行の情報をここに書いて見た人が何か判断できると本気で思ってるのかい?
せめてここのサイトのこのコンテンツをDLしたいですとか言ってくれないと
可能性が無数にありすぎて何もわからないでしょ

320 = :

漏れは、スクレイピングに、Ruby, Selenium WebDriver, Nokogiri を使っている

ブラウザの自動操作もできるし

321 = :

【VBScript】WSHについて話し合うスレ【JScript】
http://mevius.5ch.net/test/read.cgi/tech/1578522041/27

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

ユーザー名を入力して、ボタンを押す。
パスワードを入力して、ボタンを押す

322 = :

ダウンロードには、wget, curl を使う

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

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

Rubyは、可読性が高いから良いけど

324 = :

場合によってはコンソールに打ち込んでもいいだろうしな

325 = :

>>313
面白そうで試してみたいけど、
どう使えばいいの?

326 = :

ググレカス
.user.jsにして拡張機能ページにDnDするだけだろポンコツ

327 = :

>>326
ありがとう、そのキーワードでググってみるよ

329 = :

わざわざ拡張入れなくてもファイル1つ作るだけでしょ

330 = :

これ系は昔からブックマークレットで無効にしてたわ
>>290のサイトも試したがもちろん解除できる

この程度でjQueryを使う必要性も無いし、ユーザースクリプトやブラウザ拡張も不要

331 = :

こういう直前の1,2レスしか頭に入らないやつをどうにかしてほしい
ブックマークレットの話は十分に出たからそれ以外の解決例をオマケで話してるんだろうが
頭悪すぎ

334 = :

セミコロンの有無について質問です。

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



関数を定義する時は }; とするのに、
If文などでは }の後にセミコロンを付けないのはなぜですか?

335 = :

ifは式じゃないから…というのはCの時代からの構文解析の決まりだな

と言ってもJSはそもそもセミコロン不要だから
本当に飾りみたいなもんだろう

336 = :

>>334
blockはセミコロンを付けない構文

337 = :

ありがとうございました!
ブロックという概念があるんですね。
progateでそこら辺のこと書いてなかったんで。
調べてみます!

338 = :

ajaxについての質問です。
動画サイトにて、下記のように事前に用意した変数を
POSTで送信する場合に、プロパティ名に変数と同名を利用していました。
値のanswerが変数のanswerを参照するのは理解できるのですが、
プロパティのanswerは変数のanswerを参照してしまったりしないのでしょうか?
ajaxの送信する構文の中ではプロパティ名は参照しない…的な仕様なのでしょうか?

...
var answer = $selected.text();
$.post('test.php', {
  answer: answer
})
...

339 = :

ajaxに限らずオブジェクト初期化子の裸のキーは変数展開されない
es2015以降であれば
{
 [answer]: answer,
}
のようにブラケットで囲むことで変数や計算結果をキーにできる

340 = :

>>334
関数を定義するなども;は必須ではない、つけないスタイルもある
ただ特定の場合で次の行と結合するので、そこを気にしたくないのであれば;を無駄につけるというだけ
一方if文などは次の行と結合しないことがわかりやすいのでつけない人が多い
要するに気分や感覚の問題

341 = :

>>338
http://tc39.es/ecma262/#sec-object-initializer-runtime-semantics-evaluation
LiteralPropertyName:IdentifierName
Return StringValue of IdentifierName.
評価はされない

342 = :

>>339
ありがとうございます。
いろんな言語の当たり前の仕様だったのですね。
すっきりしました。

>>341
すみません。
翻訳しましたが、よくわかりませんでした…

343 = :

>>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ということがわかる

346 = :

>>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 = :

>>345 に間違いがあった

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

のイメージが正しい

349 = :

>>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 = :

オブジェクトに名前はない
名前があるのは関数


←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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