+ JavaScript の質問用スレッド vol.90 +
1 :
Name_Not_Found :
2011/09/02(金) 13:06:45.13 ID:KCoCl0dm JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-4 のテンプレを読んだ上で質問してください。
■質問を書く上で
(1) 質問にならない投稿はご遠慮ください。(煽り、コード制作依頼など)
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
(ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 長い間連続して質問する場合にレス番を名前にしてあれば、質問の流れが回答者に伝わりやすくなります。
(4) 常に自発的に調べる心構えを持ってください。
具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
※必ず「問題の事象が再現されること」を確認してください。
必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は
http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。質問テンプレートを活用してみてください。
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
1レスに収まらないならコード投稿サイトを利用してください。
http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/
■主要FAQ (全部は
http://fiddle.jshell.net/vSqKr/26/show/ )
Q1. 別窓・フレーム内容やローカルファイルを読み書きしたいのですが…
A1. 別サーバのページやファイルの内容はセキュリティ制約でアクセス不可です。
Q2. document.write()でページ内容を追加したいのですが…
A2. 一度表示完了後にwriteするとページ内容が消去されます。DOM等別手段を。
Q3. table内容のinnerHTMLやDOMでの変更がうまく行かないのですが…
A3. IEではtable/tbody/trのinnerHTML書き換え不可です。DOMを使いますが、
DOMの場合tableの直下にはtbody要素が(作らなくても)あることに注意。
Q4. フォーム部品名を変数にした「...myform.変数名.value」が動きません…
A4. 「document.forms.myform.elements[変数名].value」でどぞ。
JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。
グローバル変数はwindowのプロパティなので「x」と「window['x']」も。
Q5. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが…
A5. 取得には document.defaultView.getComputedStyle() を使う必要あり。
IEでは要素オブジェクトのプロパティcurrentStyleを使う。
Q6. setAttribute("class","foo")、setAttribute("onclick","bar()")が動きません…
A6. IEではそれは不可。「obj.className="foo"」「obj.onclick=bar」でどぞ。
Q7. タイマーやイベントハンドラに設定するコードにthisを含めたいのですが
「"...this..."」とか「function(){...this...}」ではうまく行きません。
A7. 実行時にthisが別のものを指してしまってる。以下のようにthisを束縛保存。
「function(x){return function(){...x...};}(this)」
Q8. input type="file"の値を設定(参照)できないのですが…
A8. セキュリティ制約のため設定は絶対に不可。参照はブラウザにより不可。
Q9. getElementById('ID名')や$('ID名')で要素が取れないのですが…
A9. コード実行時点でHTMLがそこまで読まれてない。window.onload 中でやるとか。
そういや少し前のテンプレから「「分かんねえの?」と煽っても無駄です。」ってフレーズが消えたね あれテンプレ引用に便利そうに思うけど
そんなんも分かんねえの?^^;
9 :
Name_Not_Found :2011/09/05(月) 14:20:33.61 ID:/QmcSJS7
IE6かと思って、IETesterで見ようとしたら Google開くとIETesterさん落ちてしまうん…
10 :
Name_Not_Found :2011/09/05(月) 16:37:11.67 ID:iiBEFa73
javascriptやってて 顔がオランウータンで髪型がライオンみたいな有名な人って誰ですか? この前勉強会でお世話になりました 最初が あ っていう文字で始まったと思います教えてください
オランウータンってa○achangに失礼だろw
12 :
Name_Not_Found :2011/09/05(月) 20:26:37.99 ID:/QmcSJS7
13 :
Name_Not_Found :2011/09/05(月) 20:57:37.72 ID:R148D68r
みなさんこんばんは <script type="text/javascript"> <!-- document.open(); document.write("000000"); document.close(); // --> </script> <input onclick="なんとかかんとか" type="button" value="EEEEEE"> <input onclick="なんとかかんとか" type="button" value="FFFFFF"> 000000の部分をボタンで切り替えたいのですが イメージ的なものはなんとなく上のコードみたいな感じなんですが やり方教えてください お願いします
僕もあんな顔になりたいです オランウーターンに似てるってかっこいいじゃないですか しかも百獣の王のライオンヘッドですよ かっこいいですね
16 :
Name_Not_Found :2011/09/05(月) 21:58:59.89 ID:R148D68r
いじわるしないで教えてください
>>13 配列化されてんじゃないの
buttonのフォームが
あほだな[0] [1]
18 :
Name_Not_Found :2011/09/05(月) 22:06:31.09 ID:R148D68r
カラーコードで配列じゃねーし
バカすぎて話しにならねーわこいつ 出直して来いジャップ
20 :
Name_Not_Found :2011/09/05(月) 22:15:11.91 ID:R148D68r
お前には難し過ぎたようだなw 回答できる方お待ちしてます。 馬鹿の泣き言は要りません
22 :
Name_Not_Found :2011/09/05(月) 22:22:28.69 ID:MfNjCeM6
>>13 なんとか、の部分にどう書くか、てこと?
document.body.innerHTML=document.body.innerHTML.replace("000000",this.value);
スマホからだから、間違ってたらすまんこ
ジャップてなんやねんコラ
24 :
Name_Not_Found :2011/09/05(月) 22:52:24.08 ID:R148D68r
うごきません
>>document.body.innerHTML=document.body.innerHTML.replace("000000",this.value); こんなウンコードでどう見てもうごくわけねーだろ? ジャップだな貴様は inputに格納されてる値を取得すればいけんだろ? お前はバカだな input[0]. input[1]. プログラミングやってるやつは情弱
26 :
Name_Not_Found :2011/09/05(月) 23:04:21.55 ID:R148D68r
はいジャップです ちょっと考えてみました <p id=hoge> <script type="text/javascript"> <!-- document.open(); document.write("aaaa"); document.close(); // --> </script> </p> <input type="button" onClick=" onclick="document.hoge.innerHTML=document.hoge.innerHTML.replace("bbbb" ,this.value);" value="bbbbに変える"> こんな感じので動くコードお願いします これはなぜか動きません 僕の頭脳ではせいいいっぱい考えてここまでです
(4) 常に自発的に調べる心構えを持ってください。 具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。 わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
君にはエスケープという言葉を教えよう。 エラーログ見れば大抵自己解決できるぞ。
29 :
Name_Not_Found :2011/09/05(月) 23:25:08.17 ID:R148D68r
色々ためしたら出来ました☆ ここって2,3年前は即答してくれる人常駐してたのに死んだのかな
>>29 質問者のレベルが落ちたからかな
エスパー待ちが昔より増えた
で、自己解決しても上手くいったコード貼らない質問者も多いしね
>>29 親切な回答者はいるが、2-3年もそのスタイルで回答続けている人はまずいない
自分勝手な質問者に失望して離れていくのがほとんどだ
ここに限らないが年々質問者の質が下がってる気がする
君も回答すればわかるからやってみれ
質問というよりコード制作依頼だから 回答の質は質問の質に比例するよ
身の丈に合わない質問に回答しても大抵は理解されないし、 コード貼ってもらえないことに質問者が失望して逆ギレして終わるケースが多いな
お前俺よりjavascriptできないくせしてでしゃばるなカスが早く死んでくれ
35 :
Name_Not_Found :2011/09/06(火) 10:39:06.27 ID:F2aHqxar
あんだって? とんでもねえ、あたしゃ神様だよ
>>29 自己解決しても上手くいったコード貼らないで文句だけは一人前なのは何で?
というか2年もjsに触れてるならこれぐらいできるはずなんだがな
2、3年もjsに触れててdocument.write(笑)
39 :
Name_Not_Found :2011/09/06(火) 17:11:53.87 ID:059RT+7E
いや、別にdocument.writeは問題ないと思うが
なにこいつらサクラ?
>>37 結果だけを求める人にありがちだな
いつまでも進歩しない永遠の初心者
すごい民度低いよねw
質問したタイミングがオランウータンだったのも原因w
44 :
Name_Not_Found :2011/09/07(水) 19:00:51.46 ID:1Rx+ajbi
【環境】Windows 7 SP1 64bit,IE9,Firefox6.0.2,Opera11.51,Chrome13.0.782.220 m
【エラーメッセージ】false
【期待する結果】true
【サンプルコード】
http://jsfiddle.net/VqtuZ/ console.log('onload' in XMLHttpRequest.prototype);
上のコードを実行すると IE、Firefox では true が表示されますが、
Opera、Chrome では false が表示されてしまいます
これはどちらの挙動が正しいのでしょうか
また、onload プロパティ対応の有無に関わらず false が表示されるブラウザにおいて
onload プロパティに対応しているかどうかを確認するにはどうすれば良いのでしょうか
chromeだけだけど console.log('onload' in new XMLHttpRequest()); これならtrueなるよ
ajax通信がしたいことだろうとすると、prototype.jsやjQueryからajax関数を持ってくれば問題無いと思うよ。 根本的解決じゃないけどね
47 :
44 :2011/09/07(水) 19:31:00.73 ID:1Rx+ajbi
>>45-46 有り難う御座います
'onload' in new XMLHttpRequest() で、Opera や Chrome でも正常に確認できるようになりました
関係ないけどXMLHttpRequestはIEだけ特別扱いすればライブラリ使うほど難しいものじゃない
携帯は?
jquery-1.6.2.jsとjquery-1.6.2.min.js違いって何ですか? 両方ともjQuery JavaScript Library v1.6.2と書いてありますが、 容量が違うので別物だと思いますが、よくわかりません。
>>51 同じ物だったんですか。ありがとうございました。
mixiのつぶやくボタンでURLを渡す際にURLパラメータの「&」のところで 途切れてしまいます。%26で記載してて、Twitterだと大丈夫なんですが mixiボイスだとダメです。解決法がわかるかたお願いします。
&でも駄目?
mixi利用上の問題なら運営に聞けば
56 :
53 :2011/09/08(木) 20:26:46.61 ID:???
レスありがとうございます。 &でやってみましたが同じように &以降の文字が消えてしまってます。 &を使わないようにURLをどうにかするか、 諦めるかでとりあえず対応いたします。
57 :
53 :2011/09/08(木) 20:27:28.65 ID:???
↑ &amp; でやってましたが、です。訂正。
58 :
Name_Not_Found :2011/09/08(木) 21:15:59.52 ID:ZKcnsOFz
ユニコードエスケープの\が\\みたいに二重になっているやつを、 \がひとつしかないときと同じような結果にするにはどうすればいいですか? javascript:alert("\\u307b\\u3052"); //「\u307b\u3052」と表示される ↑これを↓これと同じ結果になるようにしたい javascript:alert("\u307b\u3052"); //「ほげ」と表示される←期待する結果 ↓これらはうまくいきませんでした javascript:alert("\\u307b\\u3052".replace(/\\\\/g,"\\")); javascript:alert("\\u307b\\u3052".replace(/\\\\u/g,"\u")); javascript:alert("\\u307b\\u3052".replace(/\\\u/g,"\u")); javascript:alert("\\u307b\\u3052".replace(/\\u/g,"\u")); javascript:alert("\\u307b\\u3052".replace(/\u/g,"\u")); javascript:alert("\\u307b\\u3052".replace(/\\\\u(\w+)/g,"\u$1")); javascript:alert("\\u307b\\u3052".replace(/\\\u(\w+)/g,"\u$1")); javascript:alert("\\u307b\\u3052".replace(/\\u(\w+)/g,"\u$1")); javascript:alert("\\u307b\\u3052".replace(/\u(\w+)/g,"\u$1")); ↓\nの場合はこれでいけました javascript:alert("a\\nb\\nc".replace(/\\n/g,"\n"));
>>58 Unicodeエスケープとして解釈させるには new Function でコードを評価させるしかない
String.fromCharCode で対象の文字に変換する代替手段が妥当だと思う
ちなみに、"\n" は改行コードそのものだから上手くいく
61 :
Name_Not_Found :2011/09/09(金) 01:16:50.75 ID:2Ys/fsBO
こんばんは。 質問させていただきます。 極めて端的な質問なのですが、親ページで取得した値を元に、iframe内のソースを 書き換え、更に書き換えられた状態でiframe内をリロードさせるのは可能でしょうか?
同一ドメイン同士のサイトなら可能です 書き換えられた状態でリロードというのがいまいちよくわかりませんが まあだいじょぶでしょう
2つのウィンドウがあって、Aのウィンドウのリンクを押すたびに、 Bのウィンドウが更新されて、かつ最前列になる方法が知りたいのですが、教えていただけると助かります。 ぐぐって調べた、onBlur="focus()" では成功しませんでした。 よろしくお願いいたします。
function click(){ var B = document.getElementById('B_id'); B..contentWindow.document.body.innerHTML = 'change'; B.style.zIndex = 大きめの数字; これで最前面にB(iframe)が表示されないなら設計がおかしい。htmlを勉強したほうがいい。 >更に書き換えられた状態でiframe内をリロード リロードがF5更新みたいに通信を伴うなら、Cookieとかで変更を記憶してどうにかしないといけない。
他のスレで質問したものですが、 ここで質問したほうが良いのかと思い、 ここで質問しますが、よいでしょうか? で、下のが、その質問です。 ↓ 333 :友達の友達の名無しさん:2011/09/09(金) 11:14:58.57 ID:E9CsJGgr0 Twitter は、JavaScript を有効にしないと利用できません。 ウェブブラウザの JavaScript を有効にして、 ページを再読み込みしてください。 って出た。 で、IE使っているので、ツールのインターネットオプションから セキュリティ、レベルのカスタマイズで 設定変えようとしたけど、ぜんぜん、うまくいかない。 どうしたらよい? 334 :333:2011/09/09(金) 11:43:22.50 ID:E9CsJGgr0 ブラウザが破損でもしたのか? うまくいきません。 ウェブブラウザの JavaScript を有効にして、 ページを再読み込みしてください。 ってでて、いちおう、ぐーぐって調べた通りにやったのですが。。。
カエレ。そもそも板違い。自分の用さえ足りれば何でもいいという傲慢を 自覚して反省しろ。
>>66 すいません。直接的にはツイッターに関する質問なんですが、
でも、JavaScriptの質問だと思って。。。
IEの設定で普通に、JavaScript使えるように設定したつもりなんだけど
うまくいきません。
もしかして、IEかなんかが破損したとか壊れたとか?
よく分からないんです。
【解決】再インストールか別ブラウザでどうぞ はい、次の方どうぞ〜
>>67 マジレスすると、ここはjsでプログラムを書く人の質問スレッド。
あなたのは、jsを使ったプログラムをブラウザ上で利用するための質問。
ブラウザのスレか、OSの設定のスレに行きましょう。
formからsubmitするときにmimeタイプ指定する方法ってなんだっけ? まあやりたいことはvalueにJSONぶちこんで送信したいんだけど Application/jsonに指定する方法がわからない もしajaxで同じことができるならそっちも教えて(同期通信)
71 :
Name_Not_Found :2011/09/10(土) 08:13:35.03 ID:ojWvVoIn
非常に馬鹿みたいな質問かも知れないですが、、 最近はじめてjqueryのpost()を使ってajaxの処理を実装してみました たとえば、野菜というラジオボタンをクリックするとサーバから野菜の一覧を出力する感じです (そのあとキャベツだのナスだの好きなものチェックして遷移…と) こんな単純な仕組みなんですが、実際ajaxが失敗する可能性ってどの程度あるんでしょうか サーバサイドのプログラムなど環境によるというのが答えかも知れないですが ・失敗したときにどんなメッセージを出したら良いのか ・そもそも失敗することがあるのかな という2点ですごく不安です 本質的には失敗する可能性は同じサーバでのphpでの登録フォームの遷移に失敗するのと同じで、 ajaxだから失敗する可能性が高くなるというようなものではない、という理解で良いんでしょうか? なれない技術なので不安で質問しました
>>71 ページ遷移しないけど通信自体は普通の場合と同じだから、失敗する確率は普通にリンクとかをクリックしたときと同じだと思われ
73 :
71 :2011/09/10(土) 08:26:39.64 ID:ojWvVoIn
>>72 ご意見ありがとうございます、納得できました
あと、jqueryのpost()とajax()の現実的な使い分けについても聞きたいんですが
失敗の捕捉がajax()しかできないということは、クリティカルな要素についてはajax()を使って
失敗時のフォローをした方が良いってことですよね
バナー領域の自動更新みたいなコンテンツとして死活問題にならないのはpost()でいいけど…という感じで
>>73 $.post()とか$.get()は$.ajax()の簡易版みたいな感じやから それでええと思うで
75 :
71 :2011/09/10(土) 11:59:36.81 ID:???
>>70 つ beforeSend、overrideMimeType
>>70 勉強不足なのかもしれないが…。
ブラウザが受け入れる MIME-Type は Accept ヘッダで指定可能だが、サーバでないブラウザに MIME-Type を送信しないと思ってた。
>>77 overrideMimeType はサーバから送信された MIME-Type を上書きする仕組みだったはず。
79 :
78 :2011/09/10(土) 14:44:56.78 ID:???
ヘッダの送信はsetRequestHeaderだよ
しかし、サーバで Content-Type を受け取るメリットって何かある?
信頼性が低いと聞いたことがあるし、ファイルの拡張子を見るのと大して変わらない気がする
>>70 の要件ならJSONをValidateするだけで事足りるような
>>81 サーバにファイル名が渡るとは限らないでしょ。
>>82 ファイル名を渡さないUAがあるってこと?
>>82 「ファイル名を見るべき」と主張しているわけではなく、ファイル名も Content-Type も同じように信頼性が低いと主張しているわけで
文字コードの指定もできるし送れる場合は送ったほうが良いでしょう
JavaScriptでリンクをすると 検索ロボットにページを拾われないんですか?
>>70 の人です 色々ありがとうございます
僕がなんでわざわざmineを送ろうとしたかはmineを送らなかったらサーバー側でなぜか受け取ったJSONをパース出来なかったからです
JSONをただのフォームデータだと思ったのかな?
サーバー側はnode.jsで、JSON.parse()やるとなぜかそれはJSONじゃねーとエラーが帰ってきました
>>87 JSON.parse に MIME-Type は関係ないはず
JSON.parse は通信が発生するAPIではないから
パースしようとしている文字列がJSON文字列ではなかったからエラーを吐いてると思われる
>>87 JSONじゃねーとエラーが変えるJSONデータを晒すほうが早い
90 :
Name_Not_Found :2011/09/10(土) 22:34:04.02 ID:vlcMCJ4R
>>89 <form method="POST">
<input type="hidden" name="a" value="{'data':{'test':'hello'}}" />
<input type="submit" value="submit" />
</form>
これで送るとapplication/x-www-form-urlencoded で
a:{'data':{'test':'hello'}} というテキストがPOSTされる
んでnode.jsで
req.body.aでPOSTのaの持つ値({'data':{'test':'hello'}})が取得できるんだけど(alertとかで確認した)
いざこれをJSON.parse(req.body.a)すると
SyntaxError: Unexpected token ILLEGAL
at Object.parse (native)
とでる
ちなみにXHRでなんとかapplication/jsonに指定すると
{'data':{'test':'hello'}} がPOSTされて
alert(req.body.data.test) でhelloが出た
mineでJSON指定して送ると、パースしなくても受け取ったオブジェクトの値が参照できた
>>90 試してみればわかることだと思うんだが…。
JSON.parse('{"data":{"test":"hello"}}'); // Object
JSON.parse("{'data':{'test':'hello'}}"); // SyntaxError
93 :
Name_Not_Found :2011/09/10(土) 23:07:35.17 ID:vlcMCJ4R
>>92 >>92 え まじで...
いまちょっと無理やからあとで試してみる
node.js+express
server.on("message",function(req,res){
console.log(req.data);
//
//
});
てな感じでつかう
94 :
Name_Not_Found :2011/09/11(日) 19:07:24.71 ID:XiyvnHw9
95 :
Name_Not_Found :2011/09/11(日) 19:28:40.93 ID:KwsWdHlC
JSのサンプルを落として組み込み、DWでバリデートすると 「タグとタグの間に<があります_」との警告が出ます。スクリプトの動作自体は問題ないのですが。 以下の部分の4行目の右端 "Close">の「>」なのですが、本来どうあるべきなのでしょうか。 <script type="text/javascript"> //<![CDATA[ hs.registerOverlay({ html: '<div class="closebutton" onclick="return hs.close(this)" title="Close"></div>', position: 'top right', fade: 2 // fading the semi-transparent overlay looks bad in IE });
>>94 document.readyStateとか見れば
98 :
94 :2011/09/11(日) 21:19:24.07 ID:???
>>96 レスどうもありがとうございます
onloadではなくDOM構築のタイミングはdocument.readyStateだと難しいです
バージョンによっても違うかもしれませんが
各ブラウザのdocument.readyStateはこんな感じみたいです↓
firefox ... loading -> (DOMContentLoaded) -> interactive -> (onload) -> complete
safari ... loading -> (DOMContentLoaded) ->loading -> (onload) -> complete
ie ... loading or interactive -> (DOMContentLoaded) -> interactive -> (onload) -> complete
firefoxは3.6以降じゃないとdocument.readyStateは使えないようです
動作対象のブラウザはjQueryが対象としているブラウザと同じがいいです
body要素の最後に任意の要素を配置しておいてそれが取得できるかどうかで判断するとかではなく
Javascriptだけで完結したいです
99 :
Name_Not_Found :2011/09/11(日) 22:07:01.04 ID:2NNNxBWS
下の二つの結果は違ってきます。 var a1 = 'aaa'.split('a')'; var a2 = 'aaa'.split(/a/); 正規表現でも、a1 のような配列を作る表現方法はないでしょうか?
101 :
Name_Not_Found :2011/09/11(日) 22:40:29.68 ID:2NNNxBWS
>>100 ホントだ・・。すみません。
一応、この事象は Windows7 の hta環境 で起きたんですけどね。JavaScript(JScript?)のエンジンが古いんでしょうね・・。
IE splitでググればいろいろ出てくるとおもうよ
>>98 3.6より前のFirefoxはセキュリティアップデートとっくに終わってるよ
104 :
Name_Not_Found :2011/09/12(月) 05:35:52.32 ID:BOyWFed+
>>94 $(function(){});
ではいかんの?
>>104 それもDOMContentLoaded以前に呼んどかないといけない
そもそも、DOMontentLoaded 以前かどうかはコードを書く場所で自明じゃないの?
107 :
Name_Not_Found :2011/09/12(月) 12:40:20.15 ID:S0m2e7zf
こういうのは違う? getScriptがどういう振る舞いなのかよくわかってないですが <!DOCTYPE html> <html dir="ltr" lang="ja-JP"> <head> <script src="_javascript/jquery-1.6.2.min.js"></script> <script> $(function(){ $('button').click(function(){ $.getScript('test.js'); }); }); </script> </head> <body> <p id="test">こんにちわ</p> <p><button>test.js</button></p> </body> </html> test.jsのなかみ --------------------- $(function(){ console.log($('#test').html()); });
jQueryの$(function(){});、というかready()はDOMContentLoaded後に呼ばれたら
即時実行するぜ?
http://api.jquery.com/ready/ には↓って書いてある
> If .ready() is called after the DOM has been initialized,
> the new handler passed in will be executed immediately.
基本的には小難しいこと考えずにready()実行しとけばおk
トップページだとIE 6.0+, FF 2.0+, Safari 3.0+, Opera 9.0+, Chromeだね
111 :
Name_Not_Found :2011/09/12(月) 20:58:17.27 ID:K51yHnKM
失礼します。 スクリプトについて教えて頂きたいのですが、 横の解像度が 1024px以上、1280px以下のときはdesign-1.css 1280未満から上はdesign-2.css を読み込ませるには、どのようにhtmlへ記述すればよろしいのでしょう? 色々調べてみたのですが、解決できず悩んでおります。 よろしければ記述方法を教えていただけませんでしょうか? また、調べていたところ 「両方のCSSを読み込んでおいて別々のIDで設定。 bodyまたはhtmlのIDを解像度によって切り替える」 という方法もあるそうなんですが、どちらが最適なんでしょうか? よろしくお願いいたします。
only IE9 over ,Fx3.x over, Safari 3.x over
<link rel="stylesheet" media="only screen and (min-width: 480px)" href="./480.css">
<link rel="stylesheet" media="only screen and (min-width: 768px)" href="./768.css">
<link rel="stylesheet" media="only screen and (min-width: 1024px)" href="./1024.css">
[CSS]CSS3のMedia Queries(メディアクエリ)の使い方と実装例
http://coliss.com/articles/build-websites/operation/css/css3-media-queries.html
113 :
Name_Not_Found :2011/09/12(月) 21:51:27.24 ID:K51yHnKM
112様 ご回答ありがとうございますm(__)m 大変、助かりました。 早速試してみます。
>>110 過去版も含めれば対応範囲は増えるだろうけど、わざわざ古いバージョン使う理由も思い浮かばないなあ
過去のバージョンが最新ブラウザをサポートしている保証はないから複数バージョンを併用する形になって混乱を招く気がする ついでに過去のバージョンに対応したpluginも必要だが、今探しても見つかりにくいだろうからかなりの部分で自前実装になるんじゃないかね Fx2.0から対応すると検証にとんでもない時間がかかることも考慮した方がいい Fx2, 3, 3.5, 4, 5, 6 Op9, 10, 11, 11.5 IE6, 7, 8, 9 GC9, 10, 11, 12, 13
117 :
Name_Not_Found :2011/09/13(火) 00:58:05.08 ID:z5bv1WTP
div#sortedを並び替えして、かつappendChildで追加しても h3はtest1→test2→test'n'の順番でテキストを保持したいのですが どうすればよいでしょうか? 並び替えはjqueryのsortableを利用します。 追加はappendChildを利用します。 <div class="sorted"> <h3>test1</h3> <p><input type="text" name="test[]" /></p> </div> <div class="sorted"> <h3>test2</h3> <p><input type="text" name="test[]" /></p> </div> ・ ・ ・ <div class="sorted"> <h3>test'n'</h3> <p><input type="text" name="test[]" /></p> </div>
>>117 var h3 = jQuery('div.sorted'); // キャッシュしておく
jqueryで取った要素ってlive?
120 :
Name_Not_Found :2011/09/13(火) 03:02:54.65 ID:b7gmRBdg
質問させて下さい。 <script type="text/javascript" src="○○○.js" /> こんな感じでhtml内に記述した外部jsファイルを、 PCでは読み込ませるが、iphone等スマートフォンでは読み込ませない、 と言う方法はあるでしょうか? cssのケースは見つかったのですがjsの場合がどうしても分からず・・・ よろしくお願いします。
121 :
Name_Not_Found :2011/09/13(火) 03:17:21.30 ID:z5bv1WTP
>>117 アホですみません。よくわかりません。
>>119 liveでは無いですが自分のブラウザでは問題なく動いてます。
123 :
120 :2011/09/13(火) 04:08:48.04 ID:b7gmRBdg
度々すみません。 あれから色々調べて、ユーザーエージェントで振り分ける方法がある、 と言う事が分かりました。 で、かなり初歩的な質問になってしまうかもしれないのですが・・・ 以下のコードを記述したのですが、上手く動作しません。 どこか間違っている部分があるかどうか、ご教示頂いても宜しいですか? <script type="text/javascript"> var device = navigator.userAgent; $(function(){ if((device.indexOf('iPhone') > 0 && device.indexOf('iPad') == -1) || device.indexOf('iPod') > 0 || device.indexOf('Android') > 0){ document.write("<script type='text/javascript' src='スマホ用.js'></script>"); }else{ document.write("<script type='text/javascript' src='パソコン用.js'></script>"); } }); </script>
124 :
Name_Not_Found :2011/09/13(火) 07:01:08.92 ID:3ggxStTT
エラってるの?
$(function(){ })に書いたらDOM構築後に実行されるから
>>121 liveではないからソート前にキャッシュしておけば順序が保持される
127 :
Name_Not_Found :2011/09/13(火) 12:31:36.76 ID:yaFq+xAf
みうの新作キタッ
『グラソフトから見抜いたリダイレクト越し被リンク』
2010年夏まではgoogle検索『クレジットカード』で圏外、2010年12月には1位に登りつめたクレジットカードランキング王国。そのSEO対策はweb in the morningの最新SEO対策理論を駆使してグラソフトが施行していたことを突き止めました。
http://report.seo-miu.com/
128 :
Name_Not_Found :2011/09/13(火) 12:55:49.94 ID:wRqv8xMI
moocheck.jsを使ってラジオボタンを画像に置き換えていますが 同ページ内で一部だけ画像置き換え、残りは普通のラジオボタンに するにはどうしたらいいでしょうか?
129 :
Name_Not_Found :2011/09/13(火) 13:00:54.94 ID:wRqv8xMI
moocheck.jsを使ってラジオボタンを画像に置き換えていますが 同ページ内で一部だけ画像置き換え、残りは普通のラジオボタンに するにはどうしたらいいでしょうか?
idがふられているdiv以外の部分を表示しないことはどのようにして 実現されているの。
132 :
Name_Not_Found :2011/09/13(火) 22:08:12.97 ID:Va5MbK+1
実現できてるサンプルが見当たりません・・・
>>130 そのprettyPopinてやつについて調べてみると
hrefに設定されてるアドレスを読み込んで表示するもののようなんだが…
href="#testid" のようにページ内のid指定できるってのはどこに書いてあるの?
jQueryのScroll Followでスクロールする要素の上マージンを常に5pxとりたいんだけど、どうればいいでしょうか?
136 :
Name_Not_Found :2011/09/14(水) 16:19:28.14 ID:PGmnR7AQ
WinXpSP3 Opera11.51。JavaScriptで正規表現を勉強しているのでよければ教えてください。 {"{bc}","英]"・・・} 上に書いているような、"で囲まれた文字列と,のセットを、可変の数内側に持つ{}のうちの{にマッチする正規表現は作れますか? 内側のセットの数が固定なら下記でいける? alert('{"{bc}","英]"}'.match(/{(?=\"[^\"]*?\"\,\"[^\"]*?\"\})/g)); 内側のセットの数が可変なら正規表現だけでは無理??
137 :
Name_Not_Found :2011/09/14(水) 16:28:15.19 ID:MAsF+0z7
ajaxでencodeURIComponent(document.fm.name.value)で フォームに入力した値を$_POST['name']で受け取って表示させるの ですが、<font>とフォームに書いた場合なにも表示されません。 <font>が< font >に変換するのがencodeURIComponentと思ってましがが <font>をそのまま受け取って、<font>と表示させてるみたいです。 encodeURIComponentって何するものなんですか?
138 :
Name_Not_Found :2011/09/14(水) 18:31:27.15 ID:Zy7OCsez
>>137 encodeURIがやるのはURLエンコードだよ
あなたが期待しているのはHTMLエンティティ化ではないかい?
139 :
Name_Not_Found :2011/09/14(水) 19:07:36.03 ID:kWaVNw/1
aやa.bがundefinedかもしれない場合も含めて try-catchを使わずa.b.cがundefinedかどうかを一発で判断する方法を教えてください
140 :
Name_Not_Found :2011/09/14(水) 20:01:33.72 ID:MAsF+0z7
>>138 わかりましたURAエンコードですね。
xmlhttp = new XMLHttpRequest();を
xmlhttp.open("GET", 'hello.php?name='+encodeURIComponent(document.fm.name.value),true);
xmlhttp.open("GET", 'hello.php?name='+document.fm.name.value,true);
encodeURIComponentを使っても使わなくても正常に平仮名、漢字が
受け取りがfirefox、文字コードUTF-8で動いてますが、encodeURIComponentの
URLエンコードする意味ってあるのですか?
「ブラウザからサーバに日本語文字列を送信する時の話だが,
普通にHTMLでサブミットする場合は,ブラウザが勝手にその
ページの文字コードかつURLエンコーディングした結果を送信
してくれるので,特に何も考えなくて良いのだが,Ajaxの場合
はエンコードを自前でやらねばならない. 」
とwebサイトにありましたが、URLエンコードしなくても動いてます。
141 :
Name_Not_Found :2011/09/14(水) 20:09:07.92 ID:Zy7OCsez
>>140 >わかりましたURAエンコードですね
ホントにわかった…のか?
まあそれはさておき、POSTしたかったんじゃなかったの?
142 :
Name_Not_Found :2011/09/14(水) 20:18:00.05 ID:MAsF+0z7
URAでなくURLでした間違えました。 postの場合もencodeURIComponentがあってもなくても動きます。 このへんがよく分かりません。 xmlhttp.open("POST", 'hello2.php',true); xmlhttp.setRequestHeader('content-type','application/x-www-form-urlencoded;charset=UTF-8'); xmlhttp.send('name='+encodeURIComponent(document.fm.name.value));
143 :
Name_Not_Found :2011/09/14(水) 20:19:30.81 ID:Zy7OCsez
動いてるならそれでいいんじゃね? 自分以外の環境でもそうなるなら
144 :
Name_Not_Found :2011/09/14(水) 20:24:35.58 ID:Zy7OCsez
あと最初の自分の質問を見なおしてみたほうがいいかも
そうすると問題点がわかるってのはよくある話
>>137 >フォームに入力した値を$_POST['name']で受け取って表示させるの
>ですが、<font>とフォームに書いた場合なにも表示されません。
どこに表示されないの?
><font>をそのまま受け取って、<font>と表示させてるみたいです。
誰が受け取っているの?
誰がどこに表示させてるの?
表示されないんじゃなかったの?
145 :
Name_Not_Found :2011/09/14(水) 21:36:56.34 ID:Yj+JaE1y
質問です。 (123456789012345678901234567890).toFixed(0) のように大きな値のtoFixedの返り値を得たとき、IEでは > 123456789012345670000000000000 と(精度は落ちているものの)整数で表示してくれるのですが、Firefoxだと > 1.2345678901234568e+29 と指数表示になってしまいます。 これをIEのように整数の形で表示することはできないのでしょうか? よろしくお願いします。
自作するしかない テキトーだけど function 禿(num , fix) { var numeric, chank, ret; numeric = num.toString(); if(/^\d+\.?\d*$/.test(numeric)) { return num.toFixed(fix || 0); }else if(/^(\d+)\.(\d+)e\+?(\d+)$/.test(numeric)) { chank = numeric.match(/^(\d+)\.(\d+)e\+?(\d+)$/); ret = chank[1] + chank[2] + new Array(Number(chank[3]) - chank[2].length + 1).join("0"); if(fix) { return ret + "." + new Array(fix +1).join("0"); } return ret; } throw new Error("Illegal Exception, Is NaN") } alert(禿(12345)) alert(禿(12345, 2)) alert(禿(123456789012345680000000000000)) alert(禿(123456789012345680000000000000, 2))
147 :
Name_Not_Found :2011/09/15(木) 02:01:39.60 ID:TyMaU8YT
>>133 遅レスですみません。
自分ではそこまで調べられずに、てっきりできるものだと思っておりました・・・
調べていただき、ありがとうございます。
そこで質問なのですが、特定の動作(onkeyup等)をトリガーにして、
ライトボックス風のポップアップウィンドウを表示させるプラグイン
はありますでしょうか?
>>147 追記で、ポップアップさせるのはIDをふった任意の要素だとします。
もしこんなプラグインがあったら、是非教えていただけないでしょうか。
JavaScript を自ら学ぶ人のための質問スレッドです。
JavascriptとcookieでどこまでPCを特定できますか?
?
ユニークIDを振るって意図なら、ユーザーが手を加えなければ特定はできるけど、 クッキーなんていくらでも改竄可能だよ。
>>152 その場合の「特定」ってのは、一度来訪した人が再び来訪した時に
「来た事のある人だ」って判る程度ね。
「どこそこに住んでる誰々さん」っていう特定はもちろん不可能。
154 :
Name_Not_Found :2011/09/15(木) 14:13:52.63 ID:Ah9k2j7O
perlでは?
>>155 どの様にやればいいかさっぱり分かりません・・・。
↑ちゃんと飛ぶようになったのですが、永久にリダイレクト先へ飛んでしまいます・・・ 飛んだ後、F5連打みたいな状態です。 どうすればよろしいでしょうか??
>>158 2つのURLを、目的の物に変えてみそ。
>>159 ほんとすみません、解決しました。
こんな質問に回答頂き
本当にありがとうございました!
【環境】iPhone(Safari5)、Android2.2以降のブラウザ 【質問内容】 テキストを入力するフォームからlocalStorageに登録し、登録したデータを呼び出しテーブルを作成する物を作っているのですが、その場合でもサニタイズは必要なのでしょうか。 【サンプルコード】 var value = document.getElementById(”<input>のID”).value; var key = localStorage.length + 1; localStorage.setItem(key, value); よろしくお願いします。
>>161 値の使い方による。
その3行だけなら必要ないけど、localStorage から取り出した後でサニ
タイズが必要になる可能性はある。
163 :
161 :2011/09/15(木) 19:17:57.69 ID:???
すみません。確かに値の使い方を記すのを忘れてました。 for (var i=1; i <= localStorage.length; i++) { var row = list.insertRow(0); var cell1 = row.insertCell(0); var cell2 = row.insertCell(1); var item = localStorage.getItem(i); cell1.innerHTML = i; cell2.innerHTML = item; } localStorage.setItemで保存させた値を単純にテーブルに書き出す物になってます。 サーバーサイドで動かす事は何もしません。
サニタイズとエスケープを一緒にすんな
ユーザーが入力してユーザーしか使わないブラウザで完結するデータならサニタイズは不要 この場合innerHTMLを使わずdocument.createTextNodeとかでテーブルを作ればエスケープも不要
166 :
Name_Not_Found :2011/09/15(木) 20:57:21.11 ID:6bDq/BE/
jQueryを使って制作をしている者です。 初歩的な質問になるかと思いますが、 ある要素をクリックした際に、 別の要素マウスオーバーしている場合、 処理を行う というようなことを行いたいのですが、 方法はあるでしょうか? 以下のような内容を考えていますが…… $("div#aaa").click(function() { if (「div#bbb」にマウスオーバーしているとき) { 処理 } }); よろしくお願いいたします。
167 :
161 :2011/09/15(木) 21:01:11.80 ID:???
>>162 >>164 >>165 ありがとうございました!
ブラウザで完結する物なのでcreateTextNodeを使ってみます。
サニタイズとエスケープの違いも、よくわかっていないまま言葉を使っていたので調べてみます。
169 :
166 :2011/09/15(木) 22:39:44.30 ID:6bDq/BE/
マウスは1つだけです。 一般的なパソコンやブラウザの環境で動くようにしたいです。
>>166 div#aaaの子要素(のひとつ)にdiv#bbbがあるって意味なら
イベントのバブリングを調べてみるといいんでは。
jQueryならdelegate()とかlive()で書くことになる
jQueryはevent.targetで捕捉できるけど、意外と知られていないよね
172 :
Name_Not_Found :2011/09/16(金) 11:05:41.66 ID:zEqFxabs
xhrでcsvを読み込んでごにょごにょ・・というコードを書いています。 一部のブラウザでレスポンスのステータスの取得がうまくいきません。 多くのブラウザでは勝手にキャッシュを読んでくれるようですが ブラウザまかせだとファイルが更新されたことに気づかなかったりするようなので 冗長ですがこのようにしてみました。(実際のリクエスト部分は平凡なので省略) var loadCsv = function(myHeaders) { xhr.sendRequest({ //自前のxhrオブジェクト url: 'hoge.csv', headers: myHeaders, //任意のヘッダを追加できる callback: { //どこかで見たような作りのコールバック success: function(req) { var csv = req.responseText; ... }, failure: function(req) { if (304 === req.status) { loadCsv(); } ... } //304なら引数(追加ヘッダ)なしで再リク } }); }; // 最初はヘッダを追加して呼び出し loadCsv({'If-Modified-Since':'/*Last-Modifiedの値*/', 'If-None-Match':'"/*Etagの値*/"'});
173 :
続き :2011/09/16(金) 11:06:31.49 ID:zEqFxabs
流れはこうなります (1回目の読み込み)新規取得で200が返りコールバックのsuccessが実行される (2回目の読み込み)csvが更新されてれば200が返りsuccessが実行、 更新されてなければ304が返りコールバックのfailureが実行される =>追加ヘッダなしで再リクエストするとブラウザのキャッシュが(あれば)読み込まれる=>successが実行 これはIEなどほとんどのブラウザで意図どおり動作していますが、304が返ったときOperaだけstatusが0になってしまいます。 404など他のエラーはちゃんとしてるのに、304のときはなぜか0・・(undefinedとかじゃなく0です) サーバーのログで見ても、Operaのアクセスに対してちゃんと304を返しています。 Operaのバージョンは10と11を試しました。 ネットで見るとxhrとキャッシュはややこしいみたいで混乱もあるのですが statusが0になる理屈が見当つく方いたら、おきかせください。
174 :
172 :2011/09/16(金) 11:33:28.47 ID:zEqFxabs
function abc(a,b,elem) { var c = a+b; if (typeof(elem) == "object") { elem.innerHTML = c; } else { return c; } } if (typeof(elm) == "object")の所をもっと確実にしたいのですが、どうしたらいいでしょうか
>>175 typeof elem === "object" && elem.nodeType === 1 && typeof elem.nodeName === "string"
177 :
Name_Not_Found :2011/09/16(金) 15:07:07.33 ID:4X8snwj8
DOM操作の質問です <div id="hoge"> アイマス </div> の時、先頭に愛媛のを付けたいのですが+=だと後ろについてしまうので document.getElementById("hoge").innerHTML = "愛媛の"+document.getElementById("hoge").innerHTML とやっているのですが、どうも効率が悪いような気がしてなりません 先頭に付け加える時いい方法とかってあるんでしょうか?
>>180 var doc = document;
doc.getElementById("hoge").firstChild.insertBefore(doc.createTextNode(愛媛の"));
>>181 ありがとうございます、こういう時につかうんですね
>>175 if (elem && typeof elem === 'object' && elem instanceof Element)
if (elem && typeof elem === 'object' && 'innerHTML' in elem && elem.nodeType === 1)
ところで、a, b は型チェックしなくていいの?
型によって加法演算子の処理が変わると思うけど
184 :
Name_Not_Found :2011/09/17(土) 08:18:34.83 ID:rQkq0Xjw
console.log をファイルに出力したいんだけど、どうしよう。。。 メインはFirefoxですが、なんでもいいです。 セキュリティの関係上、なんかAdd-on なり about:configなりが必要なことはわかってます。 browser.dom.window.dump.enabled はうまくいきませんでした。
docとかなんも意味なさそうな変数宣言してるあたり入門者やな
えっ
>>188 文脈を読めばわかるだろ
煽ることしかできないのか、おまえはw
えっ
> (1) 質問にならない投稿はご遠慮ください。(煽り、コード制作依頼など)
> ■質問を書く上で > (1) 質問にならない投稿はご遠慮ください。(煽り、コード制作依頼など)
>>193 それは回答がついてるし、「えっ」は質問じゃないだろ
>>184 GM_setValueで保存したデータをprefs.jsから取るとか?
198 :
Name_Not_Found :2011/09/17(土) 15:58:52.07 ID:5REbP0vF
現在メディアクエリを使いウィンドウサイズごとにCSSを振り分けています。
IE6.7.8に対応させるため、調べた結果「css3-mediaqueries.js」で対応できるそうなんですが、
htmlへ記述しても起動しません。私の記述が間違っているのでしょうか?
どなたか、ご教授のほど、よろしく、お願いいたします。
<title>テスト</title>
<link rel="stylesheet" type="text/css" href="css/size1024.css" media="only screen and (min-device-width: 1024px) and (max-device-width: 1280px)" />
<link rel="stylesheet" type="text/css" href="css/size1280ov.css" media="only screen and (min-device-width: 1281px)" />
<!--[if lt IE 9]>
<script src="
http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js "></script>
<![endif]-->
</head>
他人に見せるならわかりやすく書こう カッコやインデントを省くのは自己満足、コードがカッコいいとか他人が見ればそんなのどうでもいい
>>200 文脈を読めばわかるだろ
煽ることしかできないのか、おまえはw
インデントは消えちゃうんだよな。 専ブラでポップアップすると残ってるんだけど。 全角空白でインデントすると、回答してみようかとコピペした時に困る。
203 :
Name_Not_Found :2011/09/17(土) 17:34:58.26 ID:dUaxHKt4
俺はテキストエディタでタブを&に置換してコピペしとるな
204 :
Name_Not_Found :2011/09/17(土) 17:52:13.38 ID:ZUPb0XKt
>>201 わからんわ!どのコードがわかりやすくないんだ?
>>187 あーえろうすんません入門者は僕でした
documentをキャッシュした方がIEさんが劇的に速い云々いうのは
昔どこかで読んでたけどすっかり失念してましたわ
208 :
Name_Not_Found :2011/09/17(土) 19:02:53.44 ID:vr5XGV5L
ちゃんと誤ってるのにそれを罵倒するなんて
209 :
sage :2011/09/17(土) 19:03:13.01 ID:vr5XGV5L
謝ってるのに
>>200 ,204
>>197 のことじゃないかな、多分
文脈云々は関係ないから気にしなくていいと思う
>>210 問題点は具体的に指摘して欲しいんだけどな
わかると思ったからあえて訂正しなかったけど、
>>181 の " はtypoね
>>211 問題は 2つあるけど、それを指摘されないと分からないようでは、ちょっと…
痛々しい。。。
☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ このスレには、知識がなく回答もできず、その悔しさを紛らわすために 他人に噛み付いているだけの人がいます 「質問」および「質問の主旨に対する回答」を含まない書き込みは スルーしましょう ☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
>>181 みたいに、知識もないのに回答する奴ってどうなの?
使いなすえ。専ブラ以外でコピペしたらええ
>>212 んー、問題点があるってことだけ気にとめておく
ありがとね
ああ、「#hogeがない場合にTypeError」「#hogeの子要素がない場合にTypeError」のことかな
少し迷ったけど
>>180 の「先頭に付け加える」という要件は満たしていたからスルーしてた
質問の趣旨から逸れてるし、気になる人が指摘すればいい些細な問題だと思う
痛々しい。。。
んー?insertBeforeやろ 親エレメントから実行するメソッドやで
稚拙な書き込みはスルーで ところで、皆は何のエディタでJavaScript書いてる? 俺は秀丸エディタ使ってる
引用符もな つかぐだぐだ言ってないで動作確認くらいしろ 頭でっかちで何も作れない奴になるぞ
とあるサイトにjsを納入する。 そのサイトを書き換えるのにいちいち管理人に指示してやってもらわないといけない。 ajaxを使うからそのページ上じゃないとテストできない。 どうしたらjsだけローカルのに差し替えてテストできる?
ajaxの通信先変えてローカルで試すのでないの? proxomitronでもページ書き換え&クロスドメイン通信できるけど。
Greasemonkeyを使えばクロスドメインでもへっちゃらさ!
227 :
Name_Not_Found :2011/09/18(日) 00:02:58.15 ID:cYshN7ZR
ローカルに環境構築してからUPするものだと思ってたが、最近は違うのか…
Apacheインストール済みのMacが勝ち組ということだな
ローカルにphp入れてないしソースもないんだよ proxomitronでサイト上の<script src〜>書き換えてしまうのが一番てっとり早そうだな サンキュ
一番早いのはChrome入れてコンソール叩くこと
jQueryでの質問です、本当に初歩的なことでここで質問すべきではないかもしれませんが $("#hoge").animate({"left":"+=240px"},1000); $("#hoge").animate({"width":"+=20px"},500); 一つの要素でこれを同時に行いたいのですが、方法あるんでしょうか? 上は1秒、下は0.5秒で処理したいのでどうも
233 :
Name_Not_Found :2011/09/18(日) 17:10:24.70 ID:OHc7CxwA
手作りすればいいんじゃないかな あと、500msで10回繰り返しても、きっちり5秒ってわけじゃないけど そのへんは問題ない?
問題ないですが、jQueryじゃ無理なんですかね? 一つの要素をバラバラの時間で処理するというのは
500 * 2が1000にならないからきっちり合わせたいってこと? 1行で書きたいってこと? $("#hoge").animate({"left":"+=240px"},1000).animate({"width":"+=20px"},500);
>>235 それだとleftが1秒かけて240px+された「後」に0.5秒かけて横幅が+20されるので
同時にできたらなーと
$("#hoge").animate({"left":"+=240px", "width":"+=20px"}, 500).animate({"left":"+=240px"},500);
あ、ごめん。animateを勘違いしてた。 $("#hoge").animate({ "width": "+=20px" "left": "+=120px" }, 500).animate({ "left": "+=120px" }, 500); こんなの思いついたけど、(線形変化じゃない場合)速度が一定じゃないからダメだな。多分自作がいいんじゃないかと思う。
グリモンの練習中なんですが質問です window.onload = (function(){ for(i=0;i<=2;i++){ setTimeout("w=window.open*****)",(i*2)*1000); setTimeout("w.close()",(i*2+1)*1000); } })() 概要としてはこの単純なスクリプトですが、これだと同じウインドウがわんさか出て田代砲状態になります 指定されたURLに対してまたwindow.onloadがかかるから、という解釈で合ってますか? その場合、タブ1に対してのみ実行し、新たにwindow.openされたタブ2に対しては実行しない、 というように動作させるにはどうしたらいいのでしょう
> 指定されたURLに対してまたwindow.onloadがかかるから、という解釈で合ってますか? 違う。 全体的に、コードからして知識不足丸出し。 書き始める前に、少し位、勉強したらどうか。
setTimeoutの第一引数に文字列を渡す必要はないすな
setTimeout("w"+i+"=window.open*****)",(i*2)*1000); setTimeout("w"+i+".close()",(i*2+1)*1000); こんなんでいいんじゃね
開くタイミングは 0, 2, 4 秒後、閉じるタイミングは 1, 3, 5 秒後だから、 変数 w を上書きしているせいで、閉じれていないわけじゃない。
なるほど・・・関数にして渡した方がいいみたいですね
>>240 氏の言われる通り、下手なtry&errorやるよりちゃんと読みながらやってみますo(_ _o)
サーバーの状況(カウンターなど)をリアルタイムで確認するnode.jsみたいなのが結構ありますが オススメなのとかってありますか? Ajaxで2秒毎に更新するとか無茶苦茶なのとかありますが
2chのdatファイルでやったら鯖が死ぬな
っ Ajax+Comet
node.jsって一時期話題になってリアルタイムチャットが至る所で簡易設置されてたがその後どうなった?
250 :
Name_Not_Found :2011/09/19(月) 23:19:27.96 ID:JbXQ2Isi
javascript使うと webブラウザで結構な人がactiveXがどうとか ブロックされましたとか、ポップアップでるよね? あれって開いたページから強制的に有効へ変更し、 ポップアップが出ないようにするなんてできますか? あと、最近はwebでポータルみたいなサイト作ろうと思ったら流行りはなんです?
なんて恐ろしいことを・・・
252 :
Name_Not_Found :2011/09/19(月) 23:27:32.17 ID:JbXQ2Isi
そーなんだよね 強制的にそんな事できたらウイルスも 蔓延しまくりなんだろうけど、 内輪だけで使うポータルサイトを作りたくて
iframeとかframe使えばいいんじゃね。
254 :
Name_Not_Found :2011/09/19(月) 23:46:03.39 ID:JbXQ2Isi
うーん 何故scriptを選んだかと言うと 日付と時間が欲しいんだよなぁ
window.open()でポップアップして開くのもtarget=_blankで開くのと同じで、 iframeとかで開くのもウィンドウ(タブ)が増えるか増えないかの違いでしか無い。 すべてにjsでクリック検知をさせることが可能。 多分target=_blankでブロックは無いしjsうまくやれば解決するはず。勉強しといで
256 :
Name_Not_Found :2011/09/20(火) 00:17:05.39 ID:rRpJ8N3P
それってリンクから新しいページ開くのでなく ショトカとかから起動されたページでも可能なものです? まぁ少し調べてみようとは思いますけど
>>250 いまどきJavaScript使ったくらいでそんなの出る奴のが少ないやろ
258 :
Name_Not_Found :2011/09/20(火) 08:51:48.64 ID:rRpJ8N3P
>257 俺ie初期設定のままだけど 毎回出ちゃうんだなぁ…
>>258 file:///でテストしている時限定ではなく?
>>249 Node.jsの開発自体はのんびりやってる
WebSocketが固まらないことにはな
Ajaxで乗り遅れたアホどもが今度は乗り遅れまいと騒ぎ立て
愚にもつかないアプリを作ってみただけ
261 :
Name_Not_Found :2011/09/21(水) 07:50:57.94 ID:cD+zIIkg
AS経由で、と時代錯誤なことを言ってみる
内輪だけで使うポータルサイトなら ポップアップブロックの設定でそのURLを許可しとけばいいじゃん 設定は最初の一回だけで何度も煩わされることはない
×許可しとけばいい ○許可してもらえばいい ブラウザのポップアップブロックの許可設定するのは内輪のメンバーそれぞれね 強制的にポップアップブロックを無効にする方法とか怖いことを考えるよりは現実的かと
ポップアップじゃなくて、ActiveXと情報バーの話じゃね
IEはローカルゾーンでスクリプトが仕込んであるページを開くと 警告を出すがあれの事かな つか状況説明が適当すぎて解決する気があるんだか無いんだか
266 :
Name_Not_Found :2011/09/21(水) 22:13:51.79 ID:6ZA3uTAo
var hoge = document.createElement("img"); hoge.src = "画像のURL"; これだけでは必ず「画像のURL」が呼ばれるとは限りませんか? ドキュメントに挿入しないと駄目ですか? FirefoxとChromeはドキュメントに挿入せずに上記だけで「画像のURL」にアクセスしてました
質問がわからんが読み込ませるのが目的なら new Image().src = "URL"が安定
「Coda-Slider 2.0」というjavascriptについて質問させていただきます。 これまでshtmlでページを作成し、その中でこのjavascriptを使用していました。 その時には問題なく動作していたのですが、cgiで作成したページの中にこのjavascriptを入れたところ、 「loading...」と表示されたまま動作をしなくなってしまいました。 jsファイルの中身はいっさい変更していません。 cgiが吐き出すhtmlの内容も、shtmlとほぼ同じ(shtmlでSSIを使用していた部分を、直接cgiで吐き出させた)です。 とりあえず、このjavascriptに関係する部分はいっさい変更していません。 他のjavascriptは、cgiで作成したページにおいても正常に動作しています。 何が原因だと考えられるでしょうか? よろしくお願いいたします。
そのcgiが吐いたページのソースをhtmlとして保存して動くかどうか試してみたらどうでしょう
ちょっとした質問なんですがjQueryで .css({"background-color":"#FFFFFF"}) を白ではなく設定しない、背景色をナシの状態にしたいのですがどのようにすればいいんでしょうか? nullとかでは上手くいきませんでした
.css({"background-color":""}) 答える側としてはこういう質問は楽でいいな
ありがとうございます!
274 :
Name_Not_Found :2011/09/22(木) 12:52:56.26 ID:HMSOfFyI
jQueryてtransparentてかかなくていいのんか 11文字分勉強になりますた!
function add() { var a = document.getElementById('post'); a.innerHTML += '<input type="text" name="a[]" value="" size="30" /><br />'; } <div id="post"> <input type="text" name="a[]" value="" size="30" /> </div> <input type="button" onclick="add();" value="追加"> 項目を追加するスプリクトなのですが追加すると<input type="text">に入力してた内容が全て消えてしまいます。 維持したまま追加するにはどうしたらいいでしょうか
>>275 それは「a.innerHTML = a.innerHTML + '...'」と同等だから。aの中身全体を
書き換えたら消えるのが当り前。DOMで要素を追加していくようにするのが
いいんでは。
278 :
Name_Not_Found :2011/09/22(木) 22:35:59.83 ID:7bVbNRc6
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-4 のテンプレを読んだ上で質問してください。
form の action 先が mailto: である以上、熟練者でも 送信されたか判定することは無理だと思うよ。
281 :
269 :2011/09/23(金) 04:40:35.97 ID:???
>>270 的確なアドバイスありがとうございます。
cgiが吐き出したソースをhtmlで表示させたところ、
「Coda-Slider 2.0」だけがやはり動作しませんでした。
そこで、cgiが吐き出したソースと大元のソースを比較したところ、
大元のソースでは「$(」となっている部分が、cgiが吐き出したソースでは「0」に
変わってしまっていることに気づきました。
「$」の前でエスケープすることで正常に動作することを確認しました。
javascriptの部分はヒアドキュメントで出力していたので、
エスケープシーケンスは必要ないと考えていたのですが・・・自分の思い込み間違いだったかもしれません。
javascriptに関する問題ではなく、perlに関する問題だったようです。
お手数おかけしました。
どうもありがとうございました。
マルチポストしてすぐ解決するんなら 1つのスレでgdgdやられるよりよくね? おまえら面倒臭い質問には答えんしそれだけならいいが 愚痴言ってスレ埋めるだろ 質問者にもそれくらいの権利はある(棒)
筋の通らない論理だな
それを屁理屈という
ここまでコピペ
ここまでコピ屁
もう、本当に素人で許してください。 業務の瑣末なことにちょっとした自分用アプリを作るべくjavascript(Jscript)をいじっているのですが、 どうにもまったく理解がいきません。 MakeExeというソフトを使い、スクリプトを.exe化したい、と思っているのですが、コンパイル?して 実行すると、Hello, world.的なことをしたいと思って window.ppen()とか document.write() などとしても「windowとかdocumentとか変数宣言されてねーよ」的なことを言われます。 たしかにそうだ、と変数にWindowオブジェクトとかDocumentとか宣言したいと思っていろいろ初心者用 参考書をあさるのですが、window.ppen()とかdocument.write()はそういうもんだ、と書いてあるだけで、 コードではいきなり宣言もなしにwindow.ppen()とかdocument.write()とか書かれちゃってます。 WEBのhtml組み込みならhtmlを開いた時点でウインドウが開いているので、それもまあそうなんだろう と思いますが、このあたりのことがどうにも理解できません。明確にWindowオブジェクトやDocument オブジェクトを宣言して別ウインドウでHello, world.的なことってどう書けばいいんでしょう? そしてなぜにこんな糞仕様なんですか?
何がやりたいのか、さっぱり分からんのだけど、HTA では駄目なのか?
一貫してwindow.ppenなんだな。 openだぞ。開くんだ。
>>289 windowもdocumentもブラウザの為のものでしょ
あなたがいじろうとしているJScriptにはない概念なんじゃないの?
糞仕様と罵る前に仕様を調べるべきだと思うけど
とりあえず作りたいのは、ファイル名変更ソフト。 1.フォルダをドラッグアンドドロップ 2.中に入っているファイルを正規表現で条件分岐して分類してリネーム ・AAAA→BBBB ・cccc→dddd ・ああああ→いいいい ・そのほかのもの→そのまま 的なことをする予定。異常に単純だけど、業務の中で頻繁に、断続的にやる作業なので パパパっと処理できるものを考えています。フリーのファイル名変更ソフトも探しまくった のですが、できるものが見つからなかったので、それじゃあ作ってみるかとはじめたところ。 ファイルのパスを与えて分類→リネームまではできたんだけど、ドラッグアンドドロップして ファイル名(フルパス)を取得してファイル名変更の関数に渡すことがまだできずにいます。 で、いろいろいじっていて、HTAでも実現できればいいんだけど、いろいろ探っていたところ でexe化してそこにドラッグアンドドロップすればいいんじゃね? と試しにやってみたら 変数宣言しろぉぉぉぉとか言われて、前々から疑問に思っていた「突然document.write」とか 「突然window.ppen」のもうちょっと詳しい意味が知りたくなって質問した次第。 dlg = window.open("", "TestWindow") のように宣言すりゃ使えるんだよね?? それでコンパイルしようとしてエラー吐くということは そういうことはできない、ということなんですかね????? まあ、基本は
スレ違いであることも分からない糞仕様アタマですかね?????
ああ、途中でorz 基本的にはドラッグアンドドロップでファイル名が取得できればいいだけなんですけど、根本的ににはw まだjavascriptなるものをいじり始めて2週間ですので糞などと名前を付けていただけるだけで光栄ですw ローカルのファイルの名前変更もjavascriptでは結構大変ということを知り驚いている今日このごろ。 Jscriptバンザァイw
exe 化する意味が分からん。 ファイルかフォルダを必要なだけ .js ファイル上にドロップすれば、 各フルパスが引数として渡る (トータルの引数の長さに上限はあるが)。 それを WScript.Arguments で参照すればいいだけ。
>>296 Web制作スレにすまんこってす。
自分のこれからやりたいことは
・javascriptを使って、アドビ系のアプリのスクリプトを書く
・ちょいちょいある定型雑務のためにスクリプトを書く
の2つなんです。いろいろなスレを回ってみましたが、そういうスレ、ないんですよね……orz
もしいいところがあったら誘導お願いします。
糞仕様に意味などないわ 誘導先が迷惑なので誘導すんな
>>298 jsファイルにドラッグアンドドロップするっていう発想はありませんでした!
アプリにドラッグアンドドロップはするけどファイルにドラッグアンドドロップですか……
いろいろありますね。ありがとうございます。なんかできそうです!
powershell使えpowershell
WSHスレあるんだからWSHの質問はそっち行ってよ。
304 :
Name_Not_Found :2011/09/24(土) 09:52:42.58 ID:gN4HwSWB
激しく初心者ですが、質問させてください。 同じブラウザ環境(IE)で、javascriptが「AxtiveX実行エラー」でポップアップされるサイトとされないサイトがあるのは何故でしょうか。 javascriptのサンプルを置いてくれてるサイトがあって、その見本と同じように組んだら そのサイトではポップアップされないエラーが私が作成したサイトでは出てしまいます。 【環境】Win IE8 【エラーメッセージ】セキュリティ保護のため、このコンピュータにアクセスする可能性のあるスクリプトやActiveXコントロールを実行しないよう、IEで制限されています云々
自分のパソコンで試してる?アップロードして試してる? 自分のパソコンで試してるならアップロードして試してみて
つかきみ
>>250 ちゃうんかい
なに仕切りなおしとんねん
308 :
304 :2011/09/24(土) 12:56:17.14 ID:???
>>305 思いっきり自分のパソコンです。
てかアップロードまだできない環境っす。
>>306 うーん。エラーメッセージはそのままなんです。
やっぱりアップしてないのがダメなんですかね。。。
ちょっとアップして試してみます。ありがとう。
motw
<A HREF="#" onClick="this.innerHTML='Clicked';return false;">innerHTML</A><BR> <A HREF="#" onClick="this.innerText='Clicked';return false;">innerText</A><BR> <A HREF="#" onClick="this.text='Clicked';return false;">text</A><BR> クリックしたリンク文字列の内容を変えたいので上のように試してみました。 innerHTML で大抵のブラウザで期待した動作はしてくれます。 ただ、IEのみ対応の innerText がそれのみで動くのはいいんですが FireFox3.6 で対応してるはずの text プロパティで同様のことを試しても動いてくれません。 this.text で内容を読むことはできるのでこれは書き込みはできないのでしょうか?
311 :
Name_Not_Found :2011/09/24(土) 15:52:11.79 ID:gMFl8YSH
質問です。 javascriptファイルのコードを人に見れないようにしたく、いろいろと調べたところ、 adobeのExtendScript toolkitなるものを使い、コードをバイナリ化しようとしています。 バイナリ化以前のファイルは問題なく動くのですが、 バイナリ化をしたファイルを動かそうとすると missing ; before statement のエラーが出てしまいます。 どのように修正したらよろしいでしょうか? もしくは他の方法で、コードを見れなくする方法があるのでしょうか? 回答よろしくお願いいたします。
Script.Encode
>>310 innerText は IE のみ対応じゃないし、text は勧告されてないけど Firefox 6 で対応してるし、text と innerText は対応関係にないし、突っ込みどころが多いです
ところで、なんで「FireFox3.6 で対応してるはず」なの?
FireFox じゃなくて Firefox ってのは野暮な指摘?
>>310 >>313 普通にDOMにあるthis.firstChild.nodeValue = ... の方がはるかにマシでは。
firstChildがTextNodeとは限らないし、TextNodeが連続してないとは限らない(normalizeしろ)
function getLooseTextContent (node) { switch (node.nodeType) { case Node.TEXT_NODE : case Node.CDATA_SECTION_NODE : return node.data; default : if (node.hasChildNodes ()) { return Array.prototype.concat.apply ([ ], Array.prototype.map.call (node.childNodes, arguments.callee)).join (''); } return ''; } }
>>314 textContent も DOM にあるよ
>>316 textContent未対応UA用に見えるけど、'use strict'; とIEに対応してなくない?
319 :
304 :2011/09/24(土) 23:00:50.00 ID:???
>>305 ,306
ありがとう、アップロードして見たらエラーポップアップ出なかったよ。
アップしない環境でしか出ないエラーなんてあるんだね。
助かった。
馬鹿
エラーメッセージが出たら、その文言そのままGoogleで調べてみるのをおすすめする。
>>322 ワイルドカードを正規表現に置換して、メタキャラクタを全てエスケープしてください
作ってやったぞ、カス。
var isMatched = function(url, ary) {
for (var i = 0, len = ary.length, part, next = 0; i < len; i++) {
part = ary[i];
next = url.indexOf(part, next);
if (next < 0) return false;
next += part.length;
}
return true;
},
func = (function(list) {
return function(url) {
for (var i = 0, len = list.length, ary; i < len; i++) {
if (isMatched(url, list[i].split(/\*/))) return true;
}
return false;
};
})(['
http://*google.*/ ', '
http://*yahoo.co.jp/ ']);
var url = "
http://google.mizutama.lemon.co.jp/ ";
alert(func(url));
greasemokeyとかそれに類似するものから該当するコードをパクってくればよくね
ひとつ質問させてください DOMWindow を取得する方法としての var win1 = window と var win2 = document.defaultView の違い(特に使い方)は何なのでしょうか ちなみに win1 === win2 では true が返ってきました
Safariはdocument.defaultViewはviewだけどwindowはviewではない // document.defaultView ≠ window Firefox, Opera,Chrome, IE9 はdocument.defaultViewはviewでありwindowである // document.defaultView = window
330 :
Name_Not_Found :2011/09/25(日) 16:16:53.86 ID:ur8U8M1b
<a href="javascript:alert(location.href)" target="_blank">hoge</a> こういうtargetがある場合、スクリプトは新しく開いたウィンドウ内で処理されるんですか?
試してから書け
試したら書かないと思う 書く前に試せと言う
333 :
330 :2011/09/25(日) 16:23:47.98 ID:???
レスどうもありがとうございます 一部のブラウザで試しました(新しく開いたウィンドウかどうか確認しやすいようにlocation.hrefをアラートしています) ほかのもすべて同じと思っていいんでしょうか
ウィンドウという概念のない実装だとどうだかわからんけどそういうのはjavascriptスキーマも認識しない気がする
最近のガラケーでもjavascriptスキーマは認識する
target="_blank"指定してたら自分のドメインで実行されないから サーバサイド側でスキーマチェックしなくてもいいか とかそういう話?
実際にマウスをクリックするのと click() を呼ぶのと dispatchEvent(マウスイベント) を呼ぶのとはそれぞれどんな違いがありますか?
多次元配列の書き方って [ と { どっちでも動くんですが どちらが合ってるんでしょうか? [ [1,2,3], [4,5,6], [7,8,9] ]; { {1,2,3}, {4,5,6}, {7,8,9} };
後者は動かないだろ
ああすみません。 本当は連想配列だったんですが 配列だと [ ] で連想だと { } なんですね
初めてFirefoxのアドオンを作ってます、 今まで簡単なGreasemonkeyスプリクトしか書いたことがなく、書き方がイマイチわかりません ↓のは名前空間を汚さないようにする為(?)なんですが自作関数の呼び出しでエラーが出てしまいます。 他のアドオンのソースを見ても同じ記述でなぜエラーになるのかが分かりません・・・ var aa = { init: function() { window.removeEventListener("load", aa.init, false); window.addEventListener("DOMContentLoaded", aa.onContentLoad, false);//新規文書ごとに挙がるイベント }, log: function(aText) { alert(aText); }, onContentLoad: function() { // ここまでは実行されてます this.log("test"); // エラー: this.log is not a funciton } };
aa.onContentLoad
↓
function(){
aa.onContentLoad();
}
関数内でthisを使いたいときは、〜.メソッド()にしないと〜==thisにならない。
>>3 Q7がちょっと関係アル。
全体を無名関数でくくっても名前空間は汚さないから使い分けるといいよ。
(function(){
//ほにゃらら
})();
>>344 無事出来ました。ありがとうこざいます。
もっと勉強してきます。
>>346 数レス前にもあった話だけど
thisの挙動が呼ばれ方によって色々だからそこは把握しておくと良いよ
あ、数レスじゃなく数スレだった・・・
そんな過去の話はどうでもいいお
過去の話じゃなく現に今のクライアント側JSのthisのふるまいが どうだったかというよくできたまとめだった。別に熟知してる奴には どうでもいい(というより当り前の)ことだったが。
>>310 亀だがanchor.textなんてJS1.2の遺物をよくひっぱってきたな
その15年前の参考書をよく見ろread-onlyだろが
>>328 そらSafari1/2の話だろ
Window Object 1.0の時点でWindowがAbstractView(=defaultView)を継承している
HTML5でAbstractViewが事実上廃止されWindowが独立、defaultViewがWindowProxyになった
つまりdocument.defaultView == windowは鉄板
IEならdocument.parentWindowがある
使い道はフレームのとき文書が所属するWindowを得ること
イベントが発生したウィンドウならevent.viewでもいい
>>338 HTMLの仕様書で"Firing a click event"を探して読め
"fire"の定義はDOM4にある
353 :
Name_Not_Found :2011/09/26(月) 20:31:45.92 ID:FZOkhgN8
ドキュメントには挿入しない一時的な何らかの要素ノードが必要なんですが そういう場合はどの要素を使えばいいですか?どれでも同じですか? プロトタイプのより祖先に近いものの方が無駄がないとかありますか?
>>347-348 具体的にどのスレかいった方がいいと思う
part88はイベント周りのまとめだから違うか…
>>353 用途がないと何ともいえない
ノード集合を作りたいだけならDocumentFragment
DOCUMENT_FRAGMENT_NODEはELEMENT_NODEとは違うでしょ
358 :
Name_Not_Found :2011/09/27(火) 01:35:40.71 ID:qkW8sxkg
わかんないけど、inputを作る気には確かになりませんな
要素作って放り込むだけならdocument.createDocumentFragment()だけでよし。 innerHTMLみたいなことするなら range = document.createRange(); range.selectNodeContents(document.documentElement); flagment = range.createContextualFragment("<h1>hello world</h1><script>alert('xss')</script>"); // flagment.childNodes[0] = h1 // flagment.childNodes[1] = script
そういうのって配列とか変数にしておくのとどういう用途の違いがあるんですか?
マルチ乙
363 :
361 :2011/09/27(火) 11:02:58.38 ID:???
片方を消したのでよろしくお願いします
>>361 var data = { a: 1 };
function hoge(obj) {
var n = obj['a'];
obj['a'] = n + 1;
}
alert(data.a); // 1
hoge(data);
alert(data.a); // 2
これも不思議なコードに見えるかい?
同じようにconvert_image_to_gray_scale関数が受け取ったオブジェクトを
書き換えてるみたいだが。
> data[ i*4 ] = g; > data[ i*4 + 1 ] = g; > data[ i*4 + 2 ] = g; これで貴方の言う「更新」をしてる
366 :
361 :2011/09/27(火) 14:53:19.99 ID:???
ご回答ありがとうございます。
>>364 その式で言うと、objを修正するとdataにも反映されるということですか?
>>365 そこで値を変更してなぜ関数の外のimagedataに反映されているのかがわからないんです。
変数だとreturnで返して代入しないと反映されないですよね?
オブジェクト特有なんですか?
> その式で言うと、objを修正するとdataにも反映されるということですか? Yes. > 変数だとreturnで返して代入しないと反映されないですよね? Yes. > オブジェクト特有なんですか? Yes.
すいません、ちょっと質問させて下さい。 <a href="javascript:function1(val1,val2,val3);">リンク</a> っていうコードを記述してIE6では問題なく動作していたんですが、 IE7以降のブラウザを使用するとリンククリック後、リンク色が変わらなくなってしまいました。 どうにかリンク色を変更することはできないでしょうか?
369 :
361 :2011/09/27(火) 15:14:41.58 ID:???
>>367 そうだったんですか。。
大変勉強になりました。
本当にありがとうございます。
またよろしくお願いします。
<a href="javascript:alert(0)">alert</a> たとえばこういうのでも、URL「javascript:alert(0)」が訪問済みだ、って意味で:visitedのスタイルが適用されてたのに って意味じゃない? そもそもIE6の挙動が普通じゃない気がする
function testfunction() {
document.Form1.submit();
}
<a href = javascript:testfunction()>test</a>
っていう感じです。
>>371 さんが記述してあるとおりです。
ただ、visitedになってもらわないと問題がある箇所なので、
どうにか擬似的にでも再現できないかと考えているんですが無理なんでしょうかね?
擬似的で良いならばonclickで色変えるとか好きにすれば良いのでは
>>373 その場合、リンク先に移動した後戻ってきたとき色の変更が戻ってしまいますよね?
今回対象にしている画面の特性上、どこまでリンクを踏んだかを知りたいので、
行って戻ってきたときも色の変更が生きている必要があるんです。
先に言っておくべきでしたすいません。
onclickでどこか開くならそこのURLをhrefに書いて、onclickに処理(ログ収集とかが目的?)書けばいいんじゃね。 そうじゃないなら、各aにid振ってクリックされたらcookieやlocalstorageに記録。 ページが開かれたらそこから情報取得してリンク色変更。 自前の鯖もってるなら、<a target="hoge" href="/dummy.html?id=001" onclick="func()">〜</a> <iframe name="hoge" style="display:none;"></iframe>をどっかに隠しておけばOK. 404だと無理だったから存在するページにクエリつけてユニーク化。
>>375 なるほど!!
早速やってみます!!
ありがとうございました。
いいかげんhref="javascript:"のようなのは駆逐されるべき
378 :
376 :2011/09/27(火) 21:06:37.61 ID:???
報告です。
>>375 の一番最後のブラウザをhrefで誤認させる方法で実装できそうです。
どうもありがとうございました。
関数で最後の return; って省略すべき?
もしかしてjsでは ' ' の場合でも \ はエスケープされてしまうんですか?
>>381 ありがとう
戻り値は特にないんで省略します
(1)以下のソースで任意のプロパティを挿入しようとした場合に意図した通りに text-shadow:0 0 0 transparent; のプロパティが挿入はされるものの、 実際にレンダリングには反映されないのはどこが悪いのでしょうか? (2)サンプルでは指定した任意の要素に対してしかプロパティの挿入ができませんが、 これを text-shadow のプロパティが含まれる要素すべてに適用させるようにするにはどうしたら良いでしょうか? (3)サンプルではhtmlソース内に記述したcssに対してしかプロパティの挿入ができませんが、 これを外部のcssに対しても(2)のようにプロパティの挿入をするにはどうしたら良いでしょうか? p#normal-sample{text-shadow:0 1px 2px #f00;color:#eee;} ↓ 0 0 0 transparent; を先頭に挿入 ↓ p#normal-sample{text-shadow:0 0 0 transparent, 0 1px 2px #f00;color:#eee;}
>>383 の続き
<html>
<head>
<title>プロパティを挿入する</title>
<style type="text/css">
body{font-family:MS Pゴシック, sans-serif;background-color:#333;}
p{font-size:1.5em;}
p#normal-sample{text-shadow:0 1px 2px #f00;color:#eee;}
p#fixed-sample{text-shadow:0 0 0 transparent, 0 1px 2px #f00;color:#eee;}
</style>
</head>
<body>
<p id="normal-sample">
The quick brown fox jumps over the lazy dog. 0123456789
</p>
<p id="fixed-sample">
The quick brown fox jumps over the lazy dog. 0123456789
</p>
<script type="text/javascript">
var stylesheet = document.styleSheets.item(0);
stylesheet.insertRule("p#normal-sample { text-shadow:0 0 0 transparent; }", 0);
</script>
</body>
</html>
>>384 DOCTYPEぐらい真面目に書け
(1)先頭に規則を入れたら後ろので上書きされんだろ
(2)全規則を探せ
(3)styleSheetsに外部も含まれることぐらい書いてあったんじゃねーの
アマゾンが書かないから俺も書かないもん!
DOCTYPE書かないとブラウザがquirks modeになって 新しく追加されたものを使えなくなったりするぞ IE9にとっちゃinsertRuleも新機能なんだし
ついでにIE=edgeも送信しないと場合によって互換モードになる
>>385-388 レスありがとう
>>385 >(1)先頭に規則を入れたら後ろので上書きされんだろ
すみません、どういうことかもう少しヒントだけでもください
(2)、(3)はもう少しググってみます
DOCTYPEは入れてみましたが特に変化はありませんでした。
ちなみにIEでは動作しなくてもかまいません、chromeのwebkitだけで動作すればおkなのですが、、、、
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <meta http-equiv="Content-Style-Type" content="text/css"> <title>プロパティを挿入する</title> <style type="text/css"> body{font-family:MS Pゴシック, sans-serif;background-color:#333;} p{font-size:1.5em;} #normal-sample1{text-shadow:0 1px 2px #f00;color:#eee;} #normal-sample2{text-shadow:0 1px 2px #0f0;color:#eee;} #normal-sample3{text-shadow:0 1px 2px #00f;color:#eee;} #fixed-sample{text-shadow:0 0 0 transparent, 0 1px 2px #f00;color:#eee;} </style> </head> <body> <p id="normal-sample1"> The quick brown fox jumps over the lazy dog. 0123456789 </p> <p id="normal-sample2"> The quick brown fox jumps over the lazy dog. 0123456789 </p> <p id="normal-sample3"> The quick brown fox jumps over the lazy dog. 0123456789 </p> <p id="fixed-sample"> The quick brown fox jumps over the lazy dog. 0123456789 </p>
>>390 の続き
<script type="text/javascript">
var styleSheet = document.styleSheets.item(0);
// CSSルールのリスト
var cssrules;
// W3C DOM準拠ブラウザー
if( styleSheet.cssRules ) {
cssrules = styleSheet.cssRules;
// Internet Explorer
} else if( styleSheet.rules ) {
cssrules = styleSheet.rules;
}
// CSSルールの内容を取り出す
for (var i=0; i<cssrules.length; i++) {
// CSSルールオブジェクト
var rule = cssrules.item(i);
// セレクター (p,li,ol等)
var selector = rule.selectorText;
// スタイルオブジェクト
var sytleObj = rule.style;
// CSS宣言ブロックの内容(プロパティ値)
var text = sytleObj.cssText;
// 要素がtext-shadowなら値を変更
if (selector.match(/^p/i) ) {
styleSheet.insertRule(selector + "{ text-shadow:0 0 0 transparent; }", 0);
break;
}
}
</script>
</body>
</html>
>>390-391 のようにしてみましたが
text-shadow:0 0 0 transparent;が<p id="normal-sample3">にしか挿入されず
相変わらず表示も更新されないままです
>>390 DOCTYPEの意味はおろかX/HTMLすら分かってないだろ
そこ消して<!DOCTYPE html>だけ書いとけ
> styleSheet.insertRule(selector + "{ text-shadow:0 0 0 transparent; }", 0);
同じセレクタなら後ろのものが優先されるのがCSSの基本だろ
0番に挿入したって、後ろに同じselectorのものがあれば上書きされるに決まってる
もすこしHTMLとCSSの基礎知識つけとけ
こんな部分で引っかかってたら時間かかるぞ
JSで、引数にファイルへのパスでなくて、データ内容そのものを渡して読み込ませることはできるのでしょうか。 引数にファイル名を渡すモジュールを使っているのですが、 データベースからblob型のデータをファイルに落としてから読み込ませるのは無駄だなぁと思い、質問しました。
data uriに対応しているブラウザならbase64で 対応していないブラウザのことは ↓が答えてくれる
>>391 text-shadowを変更したいruleを識別できたのなら
そのままrule.style.setProperty('text-shadow', ..)すればいいじゃん
もし変更部分を後から消すことで元に戻したいとかなら
0番でなく末尾に規則を入れるんだ
395に関しては
↓が答えてくれる
>>393 >0番に挿入したって、後ろに同じselectorのものがあれば上書きされるに決まってる
cssの仕様として後続の指定が優先されるということなら理解しているつもりです
今回の場合ちょっと特殊な事情があってブラウザのバグをcssで対策する方法をスクリプトで自動化したいという目的で
p {text-shadow:0 1px 2px #00f;color:#eee;}とあった場合に
p {text-shadow:0 0 0 transparent, 0 1px 2px #00f;color:#eee;}
と先頭に 0 0 0 transparent を挿入することで正しく表示されるようになるのです
>>390-391 で示したソースでブラウザ内蔵のツールで一旦該当プロパティを手動で無効にしたあと再度有効にすると
ちゃんと表示されるようになるのでどうにかならないものかと、、、、
ちょーっとした質問なんですが iframeの中から親要素の<div id="a">の部分を取得するには parent.document.getElementById("a")とかですが iframeの中から親要素の場所にある関数(function hoge(){〜})を実行させるにはどうしたらいいでしょうか?
documentというのはwindow.document hoge()というのはwindow.hoge()
400 :
Name_Not_Found :2011/09/28(水) 21:20:59.70 ID:8vLT5zLV
初歩的なことかもしれませんがお願いします。 画像がスクロールして表示されるやつとかスライドショーとかって、 1 すべての画像ぶんの要素を作って一度に挿入する 2 すべての画像ぶんの要素を作って一度に挿入するけど画像は必要になってから読み込む(lazyなんとか) 3 表示されるぶんの要素だけ作って挿入する、必要になるたびに作って挿入、不要になれば取り除く のどれが常識ですか?どれでもなくさらに別の方法ですか? 読み込みの早さとか処理のスムーズさとかメモリの使い具合とかそういう
>>399 なるほど、windowまで考えるんですね
ということはparent.window.hoge()ですかな?ありがとうございます!
>>401 おしい。それでも動くけど、parent.hoge();でOK
parentが親のwindowを指すからparent.documentが出来る。hogeも同様
>>402 同じホストならね。逆も可
>>400 1と2はサーバーへの負荷を考えると2になる。2と3の比較は知らん。
最悪試してみて比較すればいいんじゃね。
404 :
401 :2011/09/28(水) 22:16:18.71 ID:???
405 :
400 :2011/09/28(水) 22:23:22.53 ID:???
>>403 どうもありがとうございます
2を書いた時点で1はないな・・・と思ってました
2か3かまたはそれ以外かは
一般常識?になってるほど「これだ!」って方法はないってことですか
フォームボタンを押下した後、次のページに遷移するまで そのボタンの横で ビジーのインジケーターをくるくる回すにはどのような手順を踏めばいいかな?
onsubmitでアニメgifでも貼り付けなさい
408 :
Name_Not_Found :2011/09/29(木) 13:11:41.57 ID:ydHAIm6S
>>408 サービスに起因する問題を訪ねられてもなあ…
とりあえず、HTTPステータスを確認するとか、Twitter公式サイトで情報を探してみるとか、Twitterスレで聞いてみるとか、切り分けの方法はいろいろあると思うけどどう?
質問です。アクティブデスクトップのウィンドウサイズをスクリプトで変更する方法はないでしょうか? resizeToやresizeByでは不可でした。
411 :
Name_Not_Found :2011/09/29(木) 19:08:22.03 ID:7JLcE7x3
var a = { b: function() { /* この部分 */ } }; 「この部分」から自分自身が入れられたオブジェクトのキー名(関数自身ではなく)を取得できますか? 方法を教えてください。 「b」という文字列を取得したいです
arguments.callee.name var a = { b: function() { for (var key in this)if(this[key]===arguments.callee)return key; } }; 仕様でサポートしてなかったような気もするから調べてみて。 関数名が必要になる作りはおかしいと思うけどな。
413 :
411 :2011/09/29(木) 19:36:37.34 ID:???
>>412 > var a = { b: function() { for (var key in this)if(this[key]===arguments.callee)return key; } };
chrome、ie、firefoxのそれぞれ一部のバージョン(最新ではない)で確認してうまくいきました
どうもありがとうございます
414 :
Name_Not_Found :2011/09/29(木) 20:22:40.23 ID:ydHAIm6S
>>409 ステータスは403が返ってくるんで
公式アナウンスを探したんだけど、とくに見つけられなくて
どっかで聞いてみようと思いたち
ツイッタースレよりJSスレの人達のほうが
頼りになりそうかなーと思い聞いて見ました
スレ違いすまんこ
そろそろJavaScriptもそこそこ分かってきたと思うので、 フレームワークに手をだそうかと思うのですが、 最近のJSフレームワークの動向とシェア率っぽいまとめありますかね? やっぱjQueryの独り勝ちなのかな?
417 :
Name_Not_Found :2011/09/30(金) 16:57:10.06 ID:EkSRfQC4
<html> <body onload="b(3)"> <script type="text/javascript"> b=function(d){ document.F1.T1.value=d; d=d+1; window.setTimeout("b(d)",1000); } </script> <form name="F1" action="#"> <input type="text" name="T1" size=50> </form> </body> </html> ページが読み込まれた1秒ごとに3からプラス1していった数字を表示したいのですが、 3から数字が変化しません 引数を使わずd=3としてdを表示するようにしていくと正常に動くのですが 引数を使うとなぜ動かなくなるのでしょうか?
window.setTimeout("b("+d+")",1000); こういうこと?
>>418 うわあああああああ動きましたあああああああ
ありがとうございます
数字や文字や関数名メソッド名は勝手に識別してくれて、
さらに「”」で囲んでいない場合は記述の中に変数は使われていないものと自動で判断、
ただし変数だけは+で繋がなければ文字列として判定される、という認識でいいのでしょうか?
evalだから
ローカル変数を使いたいならこう書きます window.setTimeout(function(){b(d)},1000);
>>417 実装は整ってないけど、setTimeout には第三引数もあるんだぜ
document.forms['F1'].elements['T1'].value の値を使えばいい気もするけど
423 :
Name_Not_Found :2011/09/30(金) 19:31:48.00 ID:uL/Qm+vu
画像がロード済みかどうかを確認するにはimg要素のonloadで判断するけど すでにキャッシュされているとIEではonloadが発生しないから固有のクエリを付けて毎回ロードする ってのはなんか本末転倒のような気がするんですがこの方法しかないんですか?
>>420 ありがとうございます
知らなかったのでググってみて少し謎が解けた感じがしました
VBからC++に移行したときよりもよく理解できない感じがしてたのですが
evalについてググってみたら少しもやもやが解けた気がします
>>421 ありがとうございます
{}の中では使えても、()の中では使えない仕様になっているんですね
難しいですね
>>422 ありがとうございます
たしかにそのやり方もあったのですが、まだまだ勉強段階ですので
問題は回避せずになるべくこの方法でやりたいと思ってたのですが、結局分らず
質問してしまいました。実用するときはそのやり方も検討してみます。ありがとうございます。
{ 'key': "あ" } { key: "あ" } どちらが推奨されますか?
日ごとに変わるリストをテーブルで表示したいんだけど、 メンテのしやすさを考えてarrayの中に要素を書かず、 外部ファイルに要素だけ並べて書いて、 それを読み込んだ上で配列に入れテーブル表示ってできますか? 表の中身の要素数は変わる事なく、 要素の内容は変わる事あり。
データをタブとかカンマ区切りなどにスレば可能。 XMLHttpRequestでデータ受けてその文字列をsplit("〜〜")で配列になる。
>>426 オブジェクトリテラルならどちらでも良い
前者はシングルクォート、ダブルクォートが統一されていなくて気持ち悪い
JSONならどちら不可
430 :
Name_Not_Found :2011/10/01(土) 13:20:51.96 ID:VMIGeHw3
現在のページのリクエストメソッドを取得する方法はありますか? 通常のGETか、POST(した後のレスポンス)かを判別したいのですが・・
jQueryのtoggle(function1,function2,・・・) に相当する 機能を、 クリック操作以外で実現する方法ないないでしょうか? 今やりたいのはキーイベントで実行する機能をトグルさせることなので、 キーイベントをトグルさせるでも普通のfunction内でトグルするでも構わんとです。
あわわ・・・ ×実現する方法ないないでしょうか? ○実現する方法はないでしょうか?
A.htmlに<iframe src="B.html">が書かれているとして、 そのB.htmlで読み込んだjavascriptの関数や配列をAから呼び出すことはできますか? またB.htmlからAの配列を書き換えることはできますか?
同じサイト同士ならできます
クロージャとか無名関数とか使うときにいつもメモリーリークが気になるけど 過去ログや色んなサイトを見ても条件がイマイチ回避する方法が理解できないので 「こうするとなる」ではなく「こうしなければよい」というような形式で教えていただけないでしょうか。
大抵はDOM要素の参照絡みだから要素を直接変数に持たないとか 持っても使い終わったら変数にnullで上書きしたりかな
クロージャとかいってかっこつけてんじゃねーよカス
スジャータ スジャータ
>>431 event.keycode = function(){};
>>437 関数からDOMオブジェクトを参照できなくすれば良いです
質問させてください IE9以上ではe.style.backgroundColor=rgba(0,0,0,0.44); IE8以下ではe.style.filter='progid:DXImageTransform.Microsoft.Gradient(GradientType="0", StartColorStr="#70000000", EndColorStr="#70000000")'; としたいのですが、IE9の開発者ツールで後方互換確認をする際にはどのようなバージョン判定をするべきでしょうか UAや@cc_onなど手段は色々ありますが、このような場合何をもって判定することが推奨されているのでしょうか?
446 :
忍法帖【Lv=10,xxxPT】 :2011/10/02(日) 07:24:14.89 ID:E9xx5lxs
基本的な質問ですみません。 この記述で"START"と表示させたテキストをマウスクリックで 別のFunctionを処理させたいのですがどうすればいいでしょうか? function functionStart() { var startText = new String("START"); window.document.getElementById("start").innerHTML = startText; document.getElementById("start").onmousedown = functionNext(); } function functionStart() { var nextText = new String("NEXT"); window.document.getElementById("next").innerHTML = nextText; } 以上、よろしくお願いいたします。
>>466 それだとfunctionNextを呼び出して返された結果をonmousedownプロパティに入れている。
呼び出すのではなくfunctionNextそのものを入れるべき。具体的には「()」を書かなければ
よいのでは。
>>431 キーイベントからclick()実行すれば
<iframe>の中の要素がクリックされたことを知る方法ありますか?
ふつうにイベントハンドラ設置すればいいんじゃないの。
451 :
Name_Not_Found :2011/10/03(月) 17:48:38.45 ID:tm2H+6ZT
リアルタイムにネット対戦ができるようにするためにはjavascriptでは無理でしょうか? 簡単なチャット付きのトランプゲームぐらいを想定しています
可能だと思うよ
>>452 すみません、手がかりがつかめないのですがどのような方法を使えばいいのか
手がかりだけでも教えていただけると助かります
自分のサーバーでサーバーサイドスクリプト使わずにってことなら 無理じゃないけど面倒くさいと思うよ
サーバサイドなしでチャットって可能なの?
document.activeElementが変化したことを知る方法を教えて下さい
>>456 分らないです・・・
ただ、今はjavascriptを勉強中なのでなるべくjavascriptでできることは極めてから
次の言語に行きたいと思ってるので、できるならネット対戦まで習得したいと思って質問させていただきました
だからサーバサイドでもjs使うってことでしよ。それなら可能だろう。 ただ同じ言語でもサーバサイドとクライアントだと方法論は結構違うんじゃないかな、サーバサイドjsはよく知らないけど。 DBとかIOとかね。
>>459 ありがとうございます
自分も調べていて今日になってサーバサイドjavascriptのことは知ったばかりですが、
これでできる希望があるようでしたらしばらく頑張って勉強してみます
質問です。 JavaScriptにおいて、RubyやPerlのmapメソッドに最も近い感覚で使えるメソッドはどれですか? foreachとかfilterとかプロトタイプ拡張とか色んなやり方があって整理がつきません.....。 やりたいことを具体的にいうと、 CSVテキストを改行でsplitして更に行ごとにコンマでsplitして、ハッシュにするということです。 こんな感じに書きたいんですが。 var h = text.split('\n').map(function(line){line.split(',')});
あっ、コールバック関数にreturnを書いたら動いた… これでよかったんですね
>>456 どっかのデータ保存API使えば行けるんじゃね
そんなサービスあるか知らんけど
throw;だとエラーになるんですが throw ""; こうしないといけませんか?
466 :
自演です! :2011/10/04(火) 06:46:30.55 ID:???
Greasemonkeyのスプリクトから訳あってmetaタグでURL転送させたいのですが
単純にdocument.writeで書きだすのと
<head>に innerHTML += '<meta http-equiv="refresh" content="0; url=
http://www.google.com/ ">'
と
head = document.getElementsByTagName('head')[0];
meta =.document.createElement('meta');
meta.setAttribute('http-equiv', 'refresh');
meta.setAttribute('content', '0;url=
http://www.google.com/ ');
head.parentNode.appendChild(meta);
(合ってるのか分かりませんが・・・)
これを試したのですが転送されません。
なんとか同じウィンドウで転送させることはできないでしょうか
467 :
自演です! :2011/10/04(火) 06:47:13.69 ID:???
>>466 は
var html = '<html><head><script type="text/javascript"><!--\n'
+ 'document.write(\'<meta http-equiv="refresh" content="0;url='+url+'">\');'
+ '// --><'+'/script></head><body></body></html>';
location.href = 'data:text/html;charset=utf-8,'+encodeURIComponent(html);
これでできました
別々のホストにA.html と B.htmlがあるとして、AからiframeでBを参照してるとき 1)BがAのiframe内で表示されていること 2)そのiframeのdisplayがblockかnoneか をBからjavascriptで知るにはどうすればいいですか?
みんなテンプレくらいよももうぜもも もももも
らぶらぶみんきーもも
postMessageとか馬鹿のひとつ覚えじゃね frameElement
473 :
Name_Not_Found :2011/10/04(火) 19:35:42.01 ID:2XynbfgM
ページ内読み込み完了時にそのページ中のリンク全てに操作をしたいです。
body.onloadや、iframeタグがあるときはその要素のonload属性に指定する関数から
document以下の全要素を単純に調べることですべてのDOMをさわることが出来そうなのですが、
http://chaos2ch.com/にあるようなblogrollでは 、scriptタグでjavascriptを実行し、
head下にasyncとdeferを指定したscript要素をaddChildして、それによってリンクを読みこんでいるようです。
(javascript初心者がさらっとソースを読んだ程度なので、間違っているかもしれませんが)
このようなケースでリンクのDOM(?)の生成完了を検知して、それからAタグを探すようなことは可能でしょうか?
今回作成しようとしているのはchrome extensionなので、webページ側に工夫を施すことはできません。
よろしくお願いします。
setInterval使えば
window.document.addEventListener("DOMNodeInserted", function(){ alert("DOMノードが追加されたよ!"); } , false);
DOMNodeInserted まじでこんなイベントあるのか
>>475 おお、これはまさに、ですね。ありがとうございます。
MutationEventは実装上の問題多くて別のに変わる予定だがな
XMLHttpRequestで、外部ファイルのテキストから 全角を含む文字をカンマ区切りで配列に入れたいんですが、 うまくgetできません。 全てのファイルはwindowsのローカルにあります。 何故でしょう。
Firefoxで onmousemoveイベント中に左マウスボタンのON/OFF状態を確認する方法は無いでしょうか? マウスイベントを検知し損ねるイレギュラーな操作に対応したいのですが (例えばマウスボタンを押した後、ウィンドウの外でマウスボタンを離して元の位置に戻ってくるなど)。 event.buttonの値をチェックすることでIEでは確認することができましたが、Firefoxでは駄目でした。
>>480 httpプロトコルによる通信ではないから実装依存
>>482 ごめんなさい
知識不足で意味が理解できないです
もう少し初心者に分かる表現で教えてもらいたいです…
まずどんなコード書いてるの
>>483 XMLHttpRequest はサーバ上のファイルと通信するための機構
ローカルファイルとは通信が発生しないので操作できない
どうしてもローカルファイルとやりとりしたいならローカルサーバをたてるべき
>>481 mousedown を使えばいいのでは
>>486 mousedownイベントが発生した時よりも後の話ですが?
>>487 そこまでわかっていて迷っているところがわからない
mousedown, mouseup でプラグをたてれば解決するのでは?
>>488 だから、ウィンドウの外でマウスボタンを離したらmouseupイベントは発生しないんですってば
表示領域の高さは document.documentElement.clientHeight; で取得できますが、eventで表示領域の上からの位置を取得するにはどうすればいいのでしょうか? event.pageYでイベント座標の高さを取得しますが右下に画面をスクロールすると、この場合スクロールで見えない所も含まれてしまい 表示領域の左上でも座標が(0.0)になりません
・スクロールされてる分を引く。 ・表示領域での座標のプロパティから取得 お好きな方をどうぞ。
scrollTopを引いたら?
どれだけスクロールしたかはscrollLeftとかでわかるからそれを色々頭使って
移動した分マイナスさせる
そしてもう一つが単純に
event.clientX/clientY
でクライアント領域の座標取得や
>>491 の言ってる事を解りやすくするとこんなもん
あの、まったくもってけしからん質問ですが誰か答えて。 コーディングで楽をしたい。どうするのがいちばん楽? しかも無料で。 HTMLのZen-coding?みたいなのJavaScriptではないんでしょうか。もしくは最初の2-3文字を打つと それにまつわる後続の文字やカッコがばばばばっっっっと出るとか。 なるべく自分で打つのは少なくしてスペルミス、文法ミスを減らしたいんだけど。
IDEを導入する
googleIMEに登録しちゃえば楽だ
>>490 >>493 これ、eventなら後者でいいけど
thisみたいな要素だったらどスクロールから引くしかなくね?
イベントを使うのにeventを見ないアホコードを書いてはいけない
エラーがでてしまうのですが理由分かりますでしょうか・・・ var test = { main: function(event) { this.run(); // 呼べる this.func(); // 呼べる }, run: function(event) { this.func(); // TypeError: this.func is not a function }, func: function() { alert("func"); } }; mainはwindow.addEventListener("DOMContentLoaded", function(event) { test.main(event); }, false); で呼び出してます。
あ実際にはtry { } の中で this.runが実行されてるのですがそれが原因のようです・・
いややっぱりできない・・ this.runの中でthis.funcが呼べない・・
document.addEventListener('DOMContentLoaded', { handleEvent: function(e) { this.run(e); this.func(e); }, run: function(e) { this.func(e); }, func: function(e) { alert('func'); } });
>>505 ありがとうこざいます
でも私には理解できそうにないです。。
jsではPHPのクラス感覚でthis使えないのですね
関数は外に置いてみます
507 :
Name_Not_Found :2011/10/05(水) 06:59:59.55 ID:7ZZa31h7
どこで聴いていいかわからないのでここで質問させていただきます。 スレチならすいません。 wmpでアルバムを更新するとこのエラーがでます。 スクリプトエラー ライン:310 文字:25 プロパティ’btnFinish_onclick’の値はnullまたは未定義で、 Fuctionオブジェクトではありません。 IEを初期化しましたが効果がありませんでした。 解決法がわかるかたはご指南お願いします。
いままでUNIXタイムスタンプって秒数かと思ってた 1000 かけないといけなかったんだな
511 :
509 :2011/10/05(水) 09:50:58.42 ID:???
ops javascriptだけがミリ秒含んでるのか クソッタレめ
>>484 pcからは規制されてて携帯から
頑張って打ち込みます…
半角文字は読み込めている、
動くソースなので以下の打ち間違えは見過ごして下さい
サイトで見付けたサンプルを元に以下記述です。
function test1(){
var XMLhttpObject = null;
if(window.ActiveXObject){
try{
XMLhttpObject = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
XMLhttpObject = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
return null;
中略
var req = createXMLHttpReqest();
request.open("GET","test.txt",false);
request.send(null);
var str = request.responseText;
var testarray = str.split(",");
test.txtを文字コードUTF-8で保存する
それが分からないんです… 普通に保存すると何なんでしょう?
親のイベントオブジェクトのプロパティにアクセスしようと試みています iframeの内側か親のイベントにアクセスします window.parent.eventなどでは上手く行きませんでした
516 :
Name_Not_Found :2011/10/05(水) 13:30:53.67 ID:m1taAGRi
>>514 テキストエディタのヘルプ見たらええがな
518 :
Name_Not_Found :2011/10/05(水) 16:28:09.65 ID:0An9raD9
質問失礼します ニコニコ動画の外部ツールを利用しているのですが 縦幅と横幅をw=とh=でサイズ変更しています これをスクリプトで一括変更出来るようにしたいのですが 何か方法はありませんか? ググってもわからないのでこちらで質問させて頂きました スレ違いなら誘導して頂けると嬉しいです。 宜しくお願いします
>>516 できました!
ありがとうございました!
522 :
忍法帖【Lv=11,xxxPT】 :2011/10/05(水) 23:47:06.93 ID:zTbfj/h6
質問です。 Aという配列の要素の中にBの配列の要素のどれかが含まれるかどうかを チェックしようとしています(含まれればtrueを返す)。 何かいい方法はありませんでしょうか?
質問です windowをresizeした場合ではなく、移動させた場合に発動するイベントハンドラは存在するのでしょうか?
>>522 試してないけど。
function contains(a, b) {
var h = {};
for(var i = 0; i < b.length; ++i) { h[b[i]] = true; }
for(var i = 0; i < a.length; ++i) { if(h[a[i]]) return true; }
return false;
}
【環境】Windows7 64, Chrome 【何をしたのか】cssを設定するときエラーがでる。 【エラーメッセージ】Uncaught SyntaxError: 【期待する結果】エラーが出ないようにしたい 【サンプルコード】 $("#menu").css({ margin-top: "40px", // ← Uncaught SyntaxError: Unexpected identifier float: "right", width: "200px", }); 原因がわかりませんorz %とかpxとか使うとエラーが出るような気がします。 アドバイスよろしくお願いします。
>>526 margin-topの部分がUnexpected identifierだから
オブジェクトのプロパティ名にハイフンを使うときは、明示的に文字列リテラルとして与えないと文法違反
具体的には'margin-top'ないし"margin-top"を与える
公式ドキュメントでも
http://api.jquery.com/css/ 'background-color' : '#ddd',
'font-weight' : '',
'color' : 'rgb(0,40,244)'
って書いてるぞ?
エラーメッセージの単語くらい、辞書で調べてみようぜ
横からだけど"margin-top"とかのほうがいいのmarginTopってやってたよ
<img> が、画像の読み込みに成功したかどうかを あとから 調べる方法を教えてください。
あとからっすか
>>529 DOM 2 StyleやCSSOM的にはmarginTopが正解
jQueryのcss()で'margin-top'が許されてるのは、jQueryが裏でmargin-topをmarginTopに変換してるから
どちらのプロパティ名を指定しても、特に問題はないはず
ただ、微々たるものだけどmargin-topをmarginTopに変換するコストはかかってる
実際にプロファイルとってみて、ボトルネックになっているようなら考えなおしたほうがいいけどね
>>532 トン
これだけでも積み重なると速度に差が出てきたりするんだ
>>530 completeプロパティが使えるブラウザなら、それで調べられる
IE6以降、Fx3.6以降、Safari 5.1、Chrome 14、Opera 11.5xでは使える(はず)
ここで書いたのより前のブラウザでは調べてない
もしかしたらブラウザによってはバグあるかもしれないんで、こんなのもあるんだ程度に思っといてもらえるといいかも
535 :
534 :2011/10/06(木) 18:28:32.82 ID:???
>>530 あ、でも画像の読み込みに「成功したか」どうかはわからないかも・・・
src属性値での参照先が404だったりしたらどうなるかは調べてない
ぐぐったらonerrorが呼ばれるような場合でもtrueになるとか書いてあるね
537 :
Name_Not_Found :2011/10/06(木) 20:55:53.41 ID:tmS2M3gW
documents.openで引数がhttpではじまるwordファイルを指定した時、フォントスタイルがサーバー上でmsゴシックだったファイルを、クライアントでデフォルトに戻されてしまいます。なおクライアントにmsゴシックはインストールされています。どうすればいいでしょうか?
>>530 リクエストした画像ファイルのファイルサイズ値と実際に読み込んだファイルサイズを比べればいいのでは?
>>537 サーバ側からWSHでWordのデフォルトフォントを設定する
>>537 サーバ側からWSHで各クライアントのWordのデフォルトフォントを設定する
質問なんですが ブラウザの画面内の左上のスクリーン上の位置(fixedでtop0、left0の位置)を取得するのに IEでは window.screenLeft; window.screenTop; で取得できるのですが、firefoxで同じようにwindow.screenXを使用して取得すると ブラウザの画面内ではなく、ブラウザそのもの(フレームやメニューバーを含む)の左上の位置が取得されてしまいます IEのように表示領域内の左上のスクリーン上の位置を取得したいのですがどのような方法があるのでしょうか?
>>541 試してないけど、document.onmouseover でevent.screenX - event.clientX でどうだろう?
543 :
541 :2011/10/08(土) 17:04:58.64 ID:???
>>542 ありがとうございます!
用は頭の使いようでした、やっぱりプログラミングやってる方って発想がいい人なんですね
助かりました
発想が良いっつーか経験
545 :
Name_Not_Found :2011/10/08(土) 17:16:30.17 ID:yVTTlhCs
(.*...*) ←こういうのを正規表現ではなく文字列として認識させて置換をしたいのですが a = "(.*...*)"; txt = "(.*...*)こんにちは\n(.*...*)元気ですか"; 目標 = "(.*...*)<こんにちは\n(.*...*)<元気ですか"; txt.replace(a,a+"<"); だと1回しか置換が起こらないし 複数回やると (.*...*)<<<こんにちは というようになってしまう aa = new RegExp(a,"g"); putb = txt.replace(aa,"a+"<"); だとaが正規表現扱いになってうまく置き換わらない どうすればいいのでしょうか? ちなみにaにはいろんな文字が入るので a = "\(\.\*\.\.\.\*\)" にするっていうのはダメです
(.*...*)<元気ですよ
つまり\nを \n(.*...*)<に置換したいって事か?
>>545 の例に関しては↓でいけてると思うけどこういう意味じゃなく?
var a="(.*...*)";
var txt = "(.*...*)こんにちは\n(.*...*)元気ですか";
text.split(a).join(a+"<");
ああ・・・訂正 text→txt
>>545 まともにやるなら String#indexOf でインデックス値を得て、0 か 一つ前の文字が改行コードの時に置換するぐらいしか思いつかない
正規表現が一番楽だと思うが、正規表現メタキャラクタをエスケープするのでは駄目なのか?
>>545 txt.split(a).join(a+"<")
552 :
Name_Not_Found :2011/10/08(土) 18:54:34.08 ID:yVTTlhCs
>>548 ,551
ありがとうございます。その方法でうまくいきました。
replaceを使う方法ばかり考えていたので
その方法は思いつきませんでした。大変参考になりました。
553 :
551 :2011/10/08(土) 18:55:02.42 ID:???
554 :
550 :2011/10/08(土) 18:58:27.05 ID:???
ああ、split の方がスマートだな 'こんにちは(.*...*)' は置換して良かったのか…
(.*...*)<役に立たなかった回答は完全スルーとはいい性格だな
そんな全レスしなくていいよ 俺のレスがミスってたらこっちとしてもレスしなくていいって感じだし
\(.*...*)/<そうだそうだ
ヒゲなのか
txt.replace(a, '$&<', 'g')
>>559 $&<こんにちは(.*...*)元気ですか
阪神園芸だけに
562 :
Name_Not_Found :2011/10/09(日) 07:26:58.11 ID:dYWU805s
「$uuu」はPHPでMysqlから取り出したデータなのですが、 var aaa = $uuu; は文法として間違っていますか? var aaa = {$uuu}; こうでしょうか?間違ってたら教えてください
var aaa = "<?php echo $uuu; ?>"; 突っ込むのが面倒臭いからエスパーした
564 :
Name_Not_Found :2011/10/09(日) 07:46:00.24 ID:dYWU805s
エスパーありがとうございます 後出しで悪いのですが、よく考えると PHPのヒアドキュメントの中にjavascriptを書いたんです その場合だとどうなりますか?
565 :
Name_Not_Found :2011/10/09(日) 11:23:48.44 ID:HkRfQIGC
$$という変数名(関数名?)を使っているのはなんてライブラリですか?
>>564 echo <<<EOT
var aaa = ~$uuu";
EOT;
なかんじかな。
要は、php上で変数が置き換わったら、javascriptでどうなるかを考えればいい。
$uuu の変数内に、" が入らないようには気をつけて。入るようならばphp側でエスケープ。
>>564 とにかくブラウザの「ソースを表示」で確認して意図した通りのJavaScriptコードに
なっているかチェックする。それだけだろ。どうなるかなんていちいち説明しても
あんたが陥っている問題にズバリ当たるとは思えん。
.replace(/\D/g, '') .replace(/\D+/g, '') この2つはまったく同じですよね?
jqueryでcssを操作したいのですが、その変更をアニメーションにする良い方法はありますか? 例えば元々height:50%;だったのをheight:20%;にしたいブロックがあって $("#hoge").css("height","20%");とやると、その瞬間に変わってしまいますよね ここをアニメーションにする方法があれば教えてください。よろしくお願いします。
閲覧しづらくなるから、無駄なアニメーションはやめたほうが
それもそうですね・・・
クリック直下の単語を拾いたいのですが iphoneのブラウザではrangeparentが使えません iphoneのブラウザでrangeparentのようなことができる 方法はないでしょうか
573 :
Name_Not_Found :2011/10/10(月) 13:44:26.99 ID:EkjQ1E1r
質問させてください <html> <head> <script type="text/javascript"> function closed() { window.opener.document.getElementById("message").innerHTML+=document.getElementById("message").value; window.close(); } </script> </head> <body> <input type="text" id="message" size="50" value="" /> <input type="button" value="閉じる" onclick="closed()" /> </body> </html> 現在このようにして子ウィンドウから親ウィンドウへ値を渡しています。 input type="text"の部分を"checkbox"に変えて複数の値を子ウィンドウから 親ウィンドウへ渡すにはjavascriptはどのように変更したら良いでしょうか? <input type="text" id="message" size="50" value="" /> ←これを ↓このように複数の値を選択して渡せるようにしたいです。 <input type="checkbox" id="1" value="1です" /> <input type="checkbox" id="2" value="2です" /> よろしくおねがいします。
URLの中に挿入されたクエリを取得したいのですが、エラーになります。
http://example.com/#1 というURLの1の部分を抽出するために下のコードを作りました。
var temp=document.URL.match(/#[0-9]+/);
temp=temp.replace("#","");
alert(temp);
ところがエラーになってしまいます。
二行目を削除したら"#1"とアラートが出るので二行目が原因だと思っています。
よろしくお願いします。
location.hash
>>575 簡単に出来ました。ありがとうございました。
〜.match(/#[0-9]+/); の返り値は配列 配列にreplaceメソッドはないからエラーになった。 temp=temp[0].replace("#","");ならOK. location.hashが一番楽だけど、一応原因も知っておくといい。
578 :
573 :2011/10/10(月) 19:45:03.27 ID:EkjQ1E1r
わたしの質問は、やっぱ初心者すぎてスルーですよね(泣
message部分を変えればいい。 ただ、idは数字で始まってはいけない。
location.hash非標準だしブラウザによってバグあるからdocument.URLがいいよ
inputのname属性ってHTML5でも必須なんかな?
ttp://liosk.blog103.fc2.com/blog-entry-64.html このページで説明されている
> function $FN(fn) {
> return (typeof fn == 'function') ? fn : Function('x', 'return ' + fn);
> }
>引数が関数であればそのまま返し、文字列であれば、function anonymous(x) { return 引数 }という無名関数に変換して返す関数。
となるのはなぜでしょうか?
fn : Function('x', 'return ' + fn) が function anonymous(x) { return 引数 } になるというのが分かりません
何が分からないのかが分からない。 分からないキーワードは全部調べろ
三項演算子 a ? b : c functionを作る関数Function (new Date()・String()と似たようなもの)
はじめまして、詰まってしまったので質問させて頂きます。 【環境】 OS:Windows7 ブラウザ:IE9 【期待する結果】 XDomainRequestを利用して、外部ドメインにあるPHPファイルにPOST送信をしたいです。 送信方法はXMLHttpRequestと同様にxdr.send(key=value)としてましたが、PHP側で受信ができていませんでした。 【サンプルコード】 <クライアント側> if(window.XDomainRequest){ xdr = new XDomainRequest(); if(xdr){ xdr.onload = alert_loaded; xdr.open("post", PHPファイルパス); xdr.send("key=value"); } function alert_loaded(){ alert(xdr.responseText); } <サーバ側> <?php header("Access-Control-Allow-Origin:*"); header("Access-Control-Allow-Headers:Content-Type"); echo "{$_POST['key']}"; ?>
初歩的な質問ですいません 2つのjsファイルの用いる件なんですが、一つ目のファイルで宣言した値を2つ目のファイル で使うことができません。どうすればいいでしょうか? 2つのjsファイルのうち一つを、いわゆるヘッダファイルみたいに使いたいです。 htmlのコードはこんな感じです。 <script type="text/javascript" src="0.js"> <script type="text/javascript" src="1.js"> </script> </script> 0.jsで宣言した値を1.jsで使いたいのです。
<script type="text/javascript" src="0.js"></script> <script type="text/javascript" src="1.js"></script>
>>587 さん、できました!ありがとうございます!
そうやれば出来るんですね。助かりました。
返信早くて驚きましたw
>>585 XMLHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
を使う必要があるっぽい
でもXDomainRequestではそのメソッドが使えない
だからサーバー側でparse_str関数を使う
590 :
573 :2011/10/11(火) 01:14:41.62 ID:o/Yd3VWc
わ、わたくしの質問もお願いします・・・
>>591 ごめんなさい。
>>579 さんはわたしへのレスだったのですね^^;
messageをどのように変えたらいいのかわからず、大変申し訳ないのですが
質問の仕方が悪かったようなので質問を変えます。本当に申し訳ありません。
593 :
Name_Not_Found :2011/10/11(火) 01:24:05.87 ID:o/Yd3VWc
594 :
585 :2011/10/11(火) 02:12:18.77 ID:???
>>589 様
ご回答ありがとうございます。
知識足らずで申し訳ないのですが、parse_str関数の使い方について質問させてください。
クライアント側はそのままで、POSTしたデータをparse_strに入れれば良いと思い、
parse_str($_POST, $output);
echo $output[0];
としてみたのですが、$outputには何も入っていませんでした。
count($_POST)も値は0だったのですが、parse_str関数を使う、とはこういうことではないのでしょうか。
宜しくお願いします。
スレチ てかPHPマニュアル見ればわかる
596 :
594 :2011/10/11(火) 02:52:57.89 ID:???
>>595 様
申し訳ありません。確かにスレ違いでした。
PHPマニュアル見て勉強してきます。
>>593 opener.document.getElementById("hoge").value=str;
を
opener.document.getElementById("hoge").value+=str;
にすりゃいいんじゃね試してないけど
598 :
593 :2011/10/11(火) 07:49:37.24 ID:???
質問です。 あるフォルダにショートカットを入れ、 起動したhtmlからJavaScriptで そのパスを画面表示&リンク表示したいです。 可能でしょうか? できれば参考になる分かりやすいサイトか、 コードを頂けると助かります。
質問でござる cssで位置指定をabsoluteにして、画像を重ねてゲームっぽい画面を作ってるんだけど 重ねられた画像の上をクリックすると、addEventListenerで登録したclickイベントが起きない。 addEventListener window.addEventListener document.addEventListener など色々やってみたんだけど、常に画面のどこでもclickイベント起きるようにするにはどうすれば良いでしょうか?
IE6,7,8 使ってたりして。
>>600 マークアップの意識があればbody直下にパーツを並べたりしないだろうから
親要素にイベントリスナー付けてその上にパーツを並べるようにしたらいいんじゃね
自分のサイトからのリンクが対象サイトの逆アクセスにほとんどカウントされてないようなのですが、 制作上何かありがちなミスはありますでしょうか? 1つのサイトだけではなくほぼすべてのサイトの逆アクセスカウントが同じような状態なので、 おそらくうちのサイトに問題があるのだと思います。 リンクはブログロールというlivedoorのjavascriptから主に飛ばしています。 リンク先サイトの逆アクセスはACRwebというサービスのjavascriptがおもに使われています。 意味不明でしたらサイトのソースなど晒させていただきますので、 何か心当たりある方いましたらご教示いただけると幸いです。
スマホでタッチ関連のイベントにstopPropagation使って伝播止めると 元からあるズームみたいな基本操作に影響出る?
>>605 スクリプトで移動すると
ブラウザによってはrefererが飛ばないよ
608 :
Name_Not_Found :2011/10/12(水) 05:21:04.25 ID:19LqkjH7
説明ベタだが、cssで作った四角形の複数の要素を自由に動かせるようにしてるんだが、 ある時点で、ある特定の座標内に四角形要素があるかどうか判定し、ある場合はその要素のIDを取得する方法を教えてください。
>>608 全部の四角形について順番に調べるんじゃないの。それで不満?
>>607 ありがとうございます。
このスクリプトを使用する以上は仕方ないんですね…
戻り値の表記 IE6で以下の場合上手くいかないのですが、ダメなのですか? return num===10?true:false;
num==10 にしてみたら
<script> alert((function(num) { return num===10?true:false; })(10)); </script> 問題ないけど・・・このコードだとどううまくいかないの
num="10"とかやってないよな? ===は型も比較。 ==は型無視。→"10"と10が等しいことになる。 あと、num===10だけで、true / falseになってるから ? : の三項演算子はいらない。
10以外の値が入っててうまくいきませんというオチ
>>612 本題じゃないけど三項演算子いらなくない?
618 :
612 :2011/10/12(水) 18:04:54.01 ID:???
型比較は関係ないみたいです
>>617 三項演算子なしで、どうやるんですか?
10なら真
関数の終わりにfalseって事ですか?
619 :
Name_Not_Found :2011/10/12(水) 18:27:57.84 ID:3+r8LT4i
>>618 >三項演算子なしで、どうやるんですか?
return num===10;
コレでいいってことだ。
その辺は好きにしていいと思うが、この場合は三項やや冗長だわな。
>型比較は関係ないみたいです
numの値と型を確認してるのか?
ブレークなりアラートなりで確認してるか?
彼は戻ってこなかった
621 :
612 :2011/10/12(水) 21:41:16.98 ID:???
>>619 >return num===10;
10ならtrue、それ以外はbooleanの初期値であるfalseって事ですね?
これは目から鱗でした
ありがとうございます!
>numの値と型を確認してるのか?
>ブレークなりアラートなりで確認してるか?
typeofでnumber型で値もアラートで確認済みなのです
三項演算子でbooleanのflag変数にtrueかfalseを代入してから
return boolFlag;
で上手くいきましたけど
>>612 のままだと、やっぱり上手くいかないのです
一旦クローズとさせて下さい
解決したらまた明日にでも報告します
出先なのでソースが貼れなくてすいません
JSってbooleanじゃなくてboolでしたっけ?
>>621 boolean の初期値だから false な訳じゃない。
(num===10) という式自体が、true か false の値を返すのである。
(1 + 1) という式が 2 という値を返すのと同じ。
三項演算子ってtrueとかfalseと書いて返せないのはJScriptだけだっけ?
624 :
Name_Not_Found :2011/10/12(水) 23:41:39.97 ID:BJMgM/H+
>>599 こんにちは、お元気ですか
パスって何のパスですか
これですか
document.write(location.href);
もうちょっと詳しくお願いします
ショートカットってwindowsのショートカットのファイルのことかな?
Windows のショートカットだとしたら、ショートカット先のファイルを開いているだけだから、不可能。
628 :
612 :2011/10/13(木) 08:54:02.10 ID:???
>>622 あくまでも計算結果なんですね?
勉強になります
>>624 エスパーすると
window.open('file:///c:/hogehoge.txt');
こんな感じ?
ローカル用の俺俺ファイルマネージャーをhtmlで作りたいなら、これで出来るけど
素直に最強伝説さん使ったら?デフォルトでローカルファイルマネージャーになるんだぜ?
629 :
612 :2011/10/13(木) 08:57:34.16 ID:???
>>624 あー、補足
ショートカットを実行したいならhogehoge.lnkね
保存ダイアログで実行すれば多分動く
遅くなりました ショートカットはwindowsの.lnkのショートカットです そのファイルを読み込み、 実際のファイルがある絶対パスを取得するのは 無理なんですね
それをブラウザでやらなきゃいかんの? 自分一人で使うの? HTAにすりゃできると思うが
できれば画面遷移なしで、ユーザーに複数のファイルを自動でダウンロードさせたいと 思っています。 通常のHTMLのダウンロードリンクでは、1アクションで1つのファイルしか ダウンロードできないと思うのですが、JavaScriptを使えば、 1アクションで複数のファイルをダウンロードさせることは可能でしょうか?
すいません質問させてください。 ブラウザにある画像を貼って、その画像をクリックするとその画像上の座標値が表示されるという プログラムを作りたいのですが、ブラウザを小さくして縦横にスクロールしてから座標値を表示 させるとスクロール分だけズレてしまいます。 これは、座標値はブラウザの左上からの絶対値として取り出しいるのに対して、画像は スクロール分だけ移動しているのが原因と考えられますが、スクロールしても画像上の 座標値が取り出せる何か良い対策はないでしょうか?
あれか、サンプル動画か
>>631 自分で使うものの、
リンク先を足したり消したりが
それなりの頻度で発生するので、
メンテがちょっとでも楽になる方法を考えてました。
htaも結局は一つずつファイルパスを書いていかなきゃいけないですよね
637 :
612 :2011/10/13(木) 13:05:49.01 ID:???
>>622 すいません
>>612 の件は普通に機能しました
document.writeを使ってる別の場所で読み込みに差異が出ていた全然関係場所でのエラーでした
お騒がせしました
>>636 wshでやるといいよ
やっぱり>628みたいにセンスのない人が先にお固い言語やっちゃうと 頭も固くなってJSとかの概念がよく理解できないんだろうな 俺もそうだからよく分かる
639 :
612 :2011/10/13(木) 14:05:44.90 ID:???
>>638 全くもって否定できないから困るw
JSの一見トリッキーで理解し難いコードもJSプログラマーからすれば当たり前の記述だったりするんだろうけどね
でもJSのこーゆー柔軟性の高い部分を知るとJSが更に好きになる
嫌いになる人のが多そうだけど
return num===10 これってJSに限った事じゃないだろ・・・
話をおおげさにすることで間抜けさを隠すテクニック
>>636 えーと
結局自分専用のファイル管理アプリを作りたいって話なの?
このスレとあんまり関係ないのでは?
スクリプトでやりたいって事ならやっぱりHTAかWSHスレへ。
>>462-463 このスレじゃなかったんですか…自分用というよりは、
共有のサイトを作ろうとしてます。
そもそも初心者なのでhtaもアプリを開くのに使用する、
程度にしか思ってなかったです。
PowerShellやその他機能も探してみます
>>645 クラウドサービスでやればよくね?
手軽に自作したいならWSH
647 :
Name_Not_Found :2011/10/13(木) 23:54:33.60 ID:6lUGtS2/
thisを固定させる為に↓のように呼んだのですがこれをremoveする時に関数にはどう指定したらいいのでしょうか? window.addEventListener("DOMContentLoaded", function (event) { func.init(event); }, false);
>644さんありがとうございます
質問させてください。 画像をクリックした時、その画像をマウスの位置まで移動させたいのですが、引数のeventオブジェクトが 受け渡しされません。原因が分かる方いませんか? 以下、画像をクリックすると画像がクリックしたx座標に移動するプログラムです。 〜〜htmlファイル〜〜 <a href = "JavaScript: func(event);"> <img src=".gazo.png" name="gazoX" > </a> 〜〜jsファイル〜〜〜 function func(event){ x = event.x; document.gazoX.style.left = event.x; } 〜〜〜〜 やはり href = "JavaScript:func(event);"ではイベントオブジェクトは 受け渡しできないのでしょうか?
2chに書き込める文字で400進数以上を作りたいんですがどうしたらよろしいんだぜ?
>>650 <a href="#" onclick="func(event)">
漢字使えば?英数記号だけじゃ足らないし
>>651 二文字で一文字扱いにするとかじゃダメなのかなやっぱ
ブラウザの実装の差異を吸収するためにaddRuleやinsertRuleと同じ場所に addCssRuleを追加したいのですが、どう書いたら実現できますか?
馬鹿な発想はやめておけ
JavaScriptで、htmlのソースコード全体を取得することは可能でしょうか。 getElementByTags('body').innerHTML とかではなくて、htmlソースの最初から最後までをまるごと取得したいです。
xmlhttprequestで自分自身を取得すれば
オブジェクト指向で各方法がいまいちわかりません function a(){} a.prototype.test=function(){ alert(1); } と var a = { test:function(){ alert(1); } } っていう2通りの書き方を知ったのですがどっちで書くほうがいいですか? メリットデメリットってありますか?
>>659 前者は設計図(厳密には違うらしいけどclassって言われてる)。
var b=new a();
で作製してつかう。(いくつでも作れる。)
b.test();//alert
後者はただのオブジェクト
a.test()//alert
aというものが1つだけでいいなら後者。同じ性質のものをいくつも作って使いたいなら前者
function test({a, b, c}) こういう受け取り方ってChromeだとエラーになりませんか?
○[a, b, c] //配列 ×{a, b, c} //オブジェクトもどき→JSでは使えない △{0:a, 1:b, 2:c} //オブジェクト (素直に配列つかえ)
jqueryみたいに$("#test").html();っていうふうに$()の部分はどのように実装しているのでしょうか?
>>665 Selectors API に沿ってセレクタエンジンを実装してる
独自拡張入ってるから純粋なセレクタエンジンじゃないが
Firefoxだと関数の仮引数として使う場合に限って キーだけで値のない無名オブジェクトが渡せて さらにarguments[0].aじゃなくてaだけでもアクセスできるね リンク先のコード自体はFirefox専用(拡張機能用)?みたいだし標準じゃない独自拡張なのかな
このスレでよいのかわかりませんが質問させてください <div> <p>a</p> <p>bbbbb</p> <p>ccccc</p> <p>ddd</p> <p>e</p> </div> ってあって、クリックしたpのインデックスを取得するにはどのように実装したらよいでしょうか?
>>668 予め要素に index を埋め込んでおくかclickした時に index を算出する
670 :
Name_Not_Found :2011/10/14(金) 19:25:22.18 ID:J9tF81vM
windowsのfirefoxグリースモンキーで書いたコードをlinuxのopensuseのfirefoxのグリースモンキーにコピーしようと思いました で、linux側にコードをコピペして、起動てみました。 そうするとunsafewindowの動作がおかしい。 「unsafeWindow.document.forms[0].elements[0]」 は取得できても forms[0]やelements[0]のところに具体的なnameを指定するとundifinedになる。 これはunsafeWindowが無い時とまるで同じ動作だと思うのだが ubuntuのfirefoxでも試してみたけど、同じ結果。 linuxとwindowsじゃ、firefoxやグリモンの仕様が違うのだろうか?
そんなわけないw
672 :
670 :2011/10/14(金) 19:49:51.59 ID:J9tF81vM
解決のヒントみたいのきぼんbぬ
673 :
Name_Not_Found :2011/10/14(金) 19:59:26.67 ID:SKmLvwh0
あ
insertCellでセルを挿入するとき、この挿入したセルへテキストを素乳するのはどうやるのでしょうか? t=document.createElementでtdを作ってinnerHTMLで入れているのですがinsertCellでやる場合はどうやってテキストを入れるのですか?
>>674 insertCell の返り値はセル要素ノードだから、テキストノードを appendChild できる
675先生どうもありがとうございます これで追加できました.appendChild(document.createTextNode('foo'));
たすけてください document.getElementsByTagName('tbody')[0].deleteRow(0); r = document.createElement('tr'); t = document.createElement('td'); .innerHTML = "text"; r.appendChild(t); とやって一番目の行を消した後にtbodyに新たに行を追加したいのですが 削除してから追加をすると、追加の部分が実行できていません 個別に削除だけをやるとちゃんと削除されており、削除のコードをコメントアウトして行の追加のみ実行するとちゃんと追加されてました 削除した後に追加したいのですがこれは何が原因なのでしょうか?
>>677 r を appendChild してないからでは?
あと、innerHTML は t.innterHTML の間違い?
679 :
Name_Not_Found :2011/10/14(金) 23:02:50.85 ID:0YX8hi6k
deleteRow使ってinsertRow使わない理由はリフロー回数を減らすためなのかな
必要最低限再現できるコードを手打ちしてたら動かないコードを張ってしまいました。失礼しました 原因がよくわからないのですがdeleteRowだと挙動がおかしくてremoveChildで消すと安定しました
681 :
Name_Not_Found :2011/10/14(金) 23:41:57.78 ID:MJsn14Q9
iframeのロード完了を知りたくて iframe.onload=function(){iframe_load = true}; のような事をしているんですが他に良いチェック方法ってありますか? 特に、onloadイベント等を使わずに 特定の変数にアクセスすることでロード完了/未完が予想できると嬉しいのですが。 (imgタグであればnaturalheightで0以外が取得できればロード完了とか。)
onloadで適当な変数に書きこめば?
今そのようにしてて で、できればonloadは使いたくないんです。
同じhostならiframe.contentWindow.document.readyStateでいけるんじゃないかな。 document.readyStateの仕様は詳しくは知らないから調べてみて。
>iframe.contentWindow.document.readyState ありがとう。 上記で、同じホストなら解決できそうです。 ただ、やっぱり別ドメインだと方法はさそうでしょうか?
var frameElement; // <iframe> frameElement.contentDocument.addEventListener("load", function(e) { var {target} = e; alert(target.src); }); たまにloadイベントが出ないことがあって困る
>>685 知る限りではないね
なぜ load を使いたくないのか理由も挙げると誰かが代替手段を掲示してくれるかも
>>685 IE8 ならobject要素にすれば readystate がとれる
>>668 jQueryでわりとかんたんにできたはず。
$("div p") でとって、 $(this).index() でどうかしら
>>663 >function XHR({method,url,headers,data,onload,onerror,onreadystatechange,overrideMimeType,async}){
この書式についてMDNに解説あります?
探したけど見つかりませんれした
version 1.7の分割代入だろ にしてもメモリーリークのかほりのするあれだな
>>669 >>690 ありがとうございます
jQueryは都合で使えません
HTMLのタグも変えずにやりたいのです
jQueryのindexの仕組みが分ると組めそうな気もするのですがjQuery1.6.4の5335行目ののソースコード読んでもさっぱり
> HTMLのタグも変えずにやりたいのです JS側で番号振るのも駄目なの
だっせーな previousSiblingたどってカウントしろ こんなのにjQueryとか、目玉焼きを陶芸の窯で焼くようなもん
クリックイベントが発生するたびにdiv以下のpのコレクションにループかけて イベントターゲットとイコールならそのインデックスを返すとか。 ほかの人も言ってるけどあらかじめ番号振っといたほうがいいと思うけど
まじでツリー構造を相対的にたどれない奴が多いんだな
alert(2.03+0.05);の計算結果がおかしいのですがこれをちゃんとした結果にして計算する方法などございませんか?
こうだッ alert( ( parseInt(2.03.toString().replace(".", ""), 10) + parseInt(0.05.toString().replace(".", ""), 10) ) / 100 );
文字列に直して10かけて計算してから割って小数点に戻せばいいのですか javascriptで電卓がつくりたいのですが eval(計算式)のような場合はどのように対応したらよいでしょうか? 計算式が例えば以下の場合だと答えが求まりません str = "(100-50)/2+(3+1)"; eval(str);
702 :
701 :2011/10/15(土) 15:12:47.45 ID:???
取り下げます
jQueryでcssのtopやleftなんかに倍率を掛けたい時 top = $("#test").css("top"); $("#test").css("top", top * mult ); と2文でやるか、 $("#test").css("top", $("#test").css("top") * mult ); とやる以外に、短い書き方ってありますでしょうか
>>703 単位あるから両方とも正常動作しない気がする
var test = $("#test"), mult = 2;
test.css("top", (parseFloat(test.css("top")) * mult) + 'px');
705 :
Name_Not_Found :2011/10/15(土) 19:29:16.45 ID:K8hn5PbB
new Function()もeval()と同様に使わないほうがいいんですか? eval()を使うと問題が出る場面ではnew Function()でも同様の問題が出ます?よね?
eval is evil
evalで威張るな
==、!= も ++、-- も evil です。 ある人によれば
スコープが違う
独自ショートカットを定義するようなクロム拡張を作りたいと思って、 window.addEventListener('keydown', function(e) {console.log('hoge');}); としてみたところ、gmailなどの上だとうまく動作しません。 これはどのような原因によるものだと考えられるでしょうか? また、どうにかしてgmailの上などでもkeydownを検知することはできないでしょうか?
>>710 普通にイベント取れるぞ
manifestの設定とかがちゃんと出来てないんじゃないの?
セキュリティ保護されたサイトでは無理みたいだね
var s = "a11a22A33"; s.replace(/a/gi, "@"); というコードを実行するとaとAを@に変換します @11@22@33 という結果になります これを var r = a; s.replace(a, "@"); というふうにパターンの部分を変数に書いたのですが この場合デリミタ/とgiはどのように書けばよいのでしょうか?
【正規表現】 var r = /a/gi;//このaは文字列のa s.replace(r, "@"); var a = "a" var r = new RegExp(a, "gi");//このaは変数
変数に代入するときに""で囲わなくても良かったんですね 前者のほうが量短いのでそのとおりにしてみます
>>713 var reg = new RegExp("a","gi");
s.replace(reg, "@");
forEachってIE8とそれ以外の主要ブラウザの最新版なら使っても問題ないですか? やめたほうがいいですか?
>>717 特定の環境でしか動かさないのが保証されているなら使えばいいし、
公開して不特定多数の人が動かすのなら使うべきじゃない。
>>719 keydownはバブリング可なのでdocumentで取得できます
>>719 コンソールに入力して確認しただけで詳しいことはわからないけど、これでキーイベントは拾えるみたい。
window[document.getElementById("canvas_frame").name].addEventListener("keydown",function(){console.log("keydown")},false)
>>717 forEachはIE8では使えませんが
javascript初心者です。 jqueryのプラグインでboxyのダイアログを使用しています。 画面遷移後に、ダイアログを表示させたいのですがどのようにすればよいでしょうか? やりたいのは、画像削除などのオペレーション後に、画面遷移して、「正常に削除さrました」などメッセージをダイアログで表示したいと思っています。
<div id="test"></div> とHTMLに記述してあって、JavaScript内で条件次第で $("#test").html('<img src="test.png" />'); などとして画像を表示する場合、 画像ファイルの幅と高さを取得することはできないでしょうか? document.getElementById("test").naturalWidth や document.getElementById("test").getAttribute("width") では駄目でした ブラウザはFirefoxと、スマホです
>>726 自分で書いてるコードを理解していればできる。
$('<img src="test.png" />').one('load', function () { $('#test').append(this); var width = this.width; var height = this.height; }); 画像の読み込みを待つ
Chromeでdocument_start時にinnreHTMLを取得したら空だったんですが DOM読み込み完了前にページのソースを取得する方法はありますか?
読み込まれてないものを取得したいなんて魔法使いにしかできないよ
731 :
729 :2011/10/16(日) 13:52:34.68 ID:???
わかりました。ありがとうございました。
>>719 フレームを跨いでdocumentで待ってたりしない?
イベントが発生しているdocumentで待つ必要があるよ
>>717 標準勧告されてるし使うべきでないとは言えない
でも現状では、MDNとかにある互換コード貼っといた方がいい
質問です onmousemove=function(event,this)で その要素内での座標を取得するのはevent.offsetXですが 例えば <div id="a"> <div id="b" onmousemove=""> </div> </div> の場合、bの上に乗ったときbの左上から見た座標ではなく aから見た座標を取得する事は可能でしょうか? ちなみにdocument.getElementById("b").offsetLeftとかを取得してbの要素ないでの座標に加えるとかではなく 気持ち的にevent.parent.offsetXのようにそのまま取得したいのですが
735 :
Name_Not_Found :2011/10/17(月) 09:28:28.65 ID:/kHK0wnw
<p id="clap"><a href="javascript:void(0);" onClick="cnt(this)">拍手</a><span id="result"></span></p> var cnt = 10; var elm; function count() { elm.innerHTML = cnt++; } window.onload = function() { elm = document.getElementById('result'); if (document.addEventListener) { document.getElementById('clap').addEventListener('click', count, false); } else { document.getElementById('clap').attachEvent('onclick', count); } elm.innerHTML = cnt; } クリックしたら数字がその場で増える拍手みたいなものを作っています cnt, elm, count, result, clap のあとに数字をつけて(cnt2, elm2,…) このjavascriptを複数書くのですが、複数書いても1つしか有効にしかなりませんでした 調べてみるとonloadが原因?みたいなことはわかりましたが、 他の書き方など、どうやって対処したらいいのかわかりません あれば他の書き方、または似たようなことができる方法を教えてください
addEventListenerで検索
というかaddEventListener使ってるじゃん windowのloadにもaddEventListener
738 :
735 :2011/10/17(月) 11:34:31.54 ID:/kHK0wnw
window.onload=function(){ //このなかにaddEventListenerを書かないとイベントが登録されないのはなぜですか? } // 外に書くと登録されませんでした
window.をonload=読み込み後にfunction(){を実行します
741 :
735 :2011/10/17(月) 11:48:20.19 ID:/kHK0wnw
続けざまでうざくてすみませんが、 クリックすると値は増えるのですが、最初に一度クリックしても無反応で 2回目以降は普通に増えて行きます なぜ最初のクリックからカウントされないんでしょうか? var cnt$kk_id = $kk_clap; var elm$kk_id; function count$kk_id() { elm$kk_id.innerHTML = cnt$kk_id++; } window.addEventListener('load', function(){ elm$kk_id = document.getElementById('rt$kk_id'); if (document.addEventListener) { document.getElementById('kk_clap$kk_id').addEventListener('click', count$kk_id, false); } else { document.getElementById('kk_clap$kk_id').attachEvent('onclick', count$kk_id); } elm$kk_id.innerHTML = cnt$kk_id; }, false);
何がウザいって自分でウザいって言うとこ
>>741 elm.innerHTML = cnt++;
これの動作を理解すれば解るよ
744 :
735 :2011/10/17(月) 12:33:34.26 ID:/kHK0wnw
解決しました ご迷惑かけてすみませんでした ありがとうございました
745 :
735 :2011/10/17(月) 12:34:21.35 ID:/kHK0wnw
>>743 ありがとうございます
ずばりそこでした
746 :
Name_Not_Found :2011/10/17(月) 18:31:16.43 ID:MlgbgpDp
読み込みが完了しているドキュメントに対して あとからscript要素を挿入して、そのscript要素の中から自分自身を取得するにはどうすればいいですか? idを振るとかscript要素内に何らかの識別できる文字列を入れておいてそれを取得するとかしかないですか?
script要素を取得って、設計がおかしい気がする
748 :
Name_Not_Found :2011/10/17(月) 19:13:59.64 ID:A14YxfLI
後から追加するなら、その<script>要素はハンドリングできているわけで だったらグローバルにでも参照を置いておけばいいんではないかい? そういう意味じゃなくて?
HTMLでコアウォーズでもするのかな。
750 :
Name_Not_Found :2011/10/17(月) 19:40:34.15 ID:A14YxfLI
俺が想像したのは こんなガジェットがありますよー、てな一覧があって 「試してみる」をクリックすると、そこにペコンとガジェットが貼られる 的な感じのアレでした そういうの作ったことあるんで
document.write したいとか
752 :
746 :2011/10/17(月) 19:59:00.61 ID:???
レスどうもありがとうございます
>>750 まさにそんな感じです
それ自身はロード中に呼び出される(はず)なので問題ないのですが
プレビュー時に、プレビュー用のコードを別途用意するんじゃなく同じものを使い回せたら・・・と思って
753 :
Name_Not_Found :2011/10/17(月) 20:13:05.86 ID:A14YxfLI
>>752 ん?
コード自体は<script>の中に書いてあるの?
それとも別ファイルになってるの?
前者なら要素にアクセスすれば見れるし
後者だったらajaxすればいいよ
>>752 それだけならscriptを動的に挿入する必要はないと思うんだけどなあ
設計を見直してみたらどうだろう?
755 :
746 :2011/10/17(月) 20:21:10.42 ID:???
すみません、script要素を貼り付けた位置にガジェット的なものを表示させたくて、ロード中なら問題ないのですが 読み込み後にプレビュー等でそのガジェット的なものを生成するscript要素を動的に貼り付けた場合にも その貼り付けた箇所にガジェット的なものを生成させたい・・・できれば同じコードを使い回して・・・という感じです
756 :
Name_Not_Found :2011/10/17(月) 20:42:16.22 ID:A14YxfLI
>>755 んんん?余計わからんくなったw
> ガジェット的なものを生成するscript要素を動的に貼り付けた場合
には
> その貼り付けた箇所にガジェット的なものを生成
することはできないの?
そのガジェットを発火させるには、<script>を貼る以外に
何か他にする必要があるの?
>>755 script要素ではなくそのガジェット的なものとやらを挿入しなさい
758 :
746 :2011/10/17(月) 20:52:55.22 ID:???
>>756 ガジェット的なものを生成するscript要素にはパラメータ的なものが付加されていて、
script要素を取得する目的は、その場所にガジェット的なものを生成することもなんですが
ガジェット的なものを生成するに当たって必要なパラメータ的なものの所得も目的のひとつで、
プレビュー時にはパラメータの変更を受けて
「<script src="url">パラメータ</script>」みたいな
利用者に貼り付けてもらうコードとまったく同じコードを動的に挿入してそのつどプレビューさせたい・・・みたいな
たしかに面倒くさいことをやろうとしている気はします
使い回そうとする発想が、手抜きをしようとして逆に面倒くさくなってる気がします・・・
DOMNodeInsertedIntoDocument onpropertychange onload
761 :
Name_Not_Found :2011/10/17(月) 21:28:23.05 ID:A14YxfLI
>>758 >「<script src="url">パラメータ</script>」みたいな
それを貼ってもガジェットが発火しないということは
そのコードがDomContentLoadedとかそういうイベントで
発火するように作られている、ってことじゃろか
それだと貼るだけじゃ動かないから
ガジェットの方のスクリプトに手が入れられるんだったら
>>760 が書いてくれたようなイベントでも発火するようにすればいいよ
function hoge(elem){} とかってよく見るのですがこのelemの部分って onclick="hoge()"の場合だと()の部分に大抵何が入るんでしょうか?
>>762 undefined
試せばわかるしゃない
何もないからundefinedになるのであって引数にundefinedが設定されているわけではない
>>761 そのHTMLコード自体を直接貼り付けてもらった場合は問題ありません。スクリプトは実行されます
ロード後にそのHTMLコードを動的に挿入した場合もスクリプト自体は実行されますが自分自身を取得できないので、
パラメータを得られない&自分自身と同じ場所にガジェットが貼られないわけです
ttp://d.hatena.ne.jp/amachang/20061201/1164986067 自分自身を取得するコードはこれを使っているので動的生成時には対応できなくて
なぜ動的に生成したいかというと、パラメータを編集したあとにプレビューさせたいからです
しかも貼り付けてもらうコードと同じものを使って(←この部分に無理があるわけですが別のものを用意すると煩雑になるのでなんとかならないかなと)
Firefox4以降にはdocument.currentScriptってのがあるんだっけ こういう需要って多かったのかな
>>765 同じコードを使いまわしたいなら、jsをファイルを再読み込みするんじゃなくて
ガジェットを生成するコードを関数にすればいいと思うよ
javascriptのdrawimage()について質問です。 drawImage( cutImg, 0 , 0 , 400 , 400 , 0 , 0 , 200 , 200 ); ↑の様な記述をしても最後の幅200px,高さ200px通りのサイズで表示されず、 幅114px、高さ200pxで表示されます。 確認方法は、 Chrome 14 FireFox 7 safari 5 iPhone4 iOS5 全てで同じ表示になりました。 drawImageの引数内のソース画像切り出しサイズに対して、 表示サイズを半分にしているのは、iPhone4で画像が荒れないようにするためです。 調べてみるとAndroid 2.1で同じようなバグが発生するらしいのですが、 今回は上記の確認方法でも起こっている現象なので、 お分かりになる方がいましたら教えて頂けると幸いです。 宜しくお願いします。
書かれていない箇所の記述に問題が有ると予想してみる
javascriptけっこう頑張ってるんだがなかなか上達しないんだ 他に並行して勉強すると捗る言語とかない? 例えばrubyとか、Javaだとか
ない javascriptは特異
javascriptは言語として簡単なほう この程度で躓くならJavaもRubyも無理
javascriptは良い本が極めて少ないのがなあ、プログラマー向けじゃないのが大多数
>>770 文法やアルゴリズムの部分でつまずいてるなら、RubyかPythonやった方がいいと思うよ。
言語仕様的な部分でつまずいてるなら技術書を熟読するしかない。
>>772 どう考えても言語としては変態な方だろ。
>>772 難しい事をしようとしなければどう考えてもJavaとかC#の方が簡単だぞ
言語でかっちり色々決められてるからな
JavaScriptは自由度があるから多種多様な書き方されてたりでしんどいと思うわ
>>768 canvasのwidth、cutimgのwidthはいくつだい?
この変態言語を知れば知るほどハマっていく そしてJAVAとかVBとか久々に触るとムカつく事が多い
778 :
768 :2011/10/18(火) 08:33:50.60 ID:???
>>769 ,
>>776 ご返信ありがとうございます!
例に出した記述は分かりやすくするため数字を置き換えていましたが、
実際の数値は、
canvasはwidth:171px;をcssで指定しています。
cutImgは343pxで切り取っていますが、実際は1006px×2687pxの
画像になります。
もし宜しければ↓にソースをアップしましたので
見て頂けませんでしょうか。
http://jsfiddle.net/uwbW5/ 画像などが参照できないため、実際の挙動確認は難しいと思います。。。
お手数おかけしますが、宜しくお願いします。
779 :
768 :2011/10/18(火) 08:58:07.43 ID:???
すみません、焦ってソース内の該当部を示さず投稿してしまいました。 長々とソースが書かれていますが、今回の件に関しての記述は ■HTML <canvas id="ch_disp_box"> </canvas> ■JavaScript 上部にある、 // ソース画像 切り取りサイズ指定(オリジナルサイズ) var sImgSize = { dispX : 343, dispY : 296, } 下部にある、 // テレビ番組セット 以下のfunctionになります。 途中で、画像表示サイズを決める dImgWとdImgHを定義していますが、dImgWの倍率設定を中途半端な数値にしないと正しい表示比率になりませんでした。 (dImgHとほぼ同じ書き方でいけると思ったのですが…) 長文失礼しました。 宜しくお願いします。
ローカルに置いた画像ファイルのパスを指定してwidthとheightを取得する方法はございませんか? <img src="a.jpg" width="100" height="150">のようにHTMLにタグが書かれた場合の取得ではなくパスしか分らない状態での取得です
ございます
どうやってとるんですか?
なめらかスクロールを自作で実装しようとしてるんですが、 aタグにアンカーをつけた状態で、aタグにイベントを設定しても、 通常のスクロール機能が優先されちゃってうまく動かないんです。 この通常のスクロール機能を無効にして、 javascriptでスクロールしたいんですが、どうすればよいでしょうか?
ちょっと↑の質問無視してください すいません
JavaScriptでstaic変数みたいな使い方ってどうすればいいのでしょうか? ボタンを押したらfunc Bを呼び出して・・・ fucntion B(){ functionA() } function A(){ var a a++; document.write(a) } //-----または fucntion B(){ var b functionA(b) b++ } function A(b){ document.write(b) } みたいのじゃ駄目ですし
counter = (function () { var i = 1; })
ごめん途中送信してしまった var counter = (function () { var i = 1; return function () { return i++; }; })(); console.log(counter()); console.log(counter()); console.log(counter()); こういう事がしたいって事?
もっと具体的に説明すると +------------+ 値:「 0 」 [ + ] [ - ] +------------+ +ボタンを押したら1 -ボタンを押したら-1 現在の値を常に記憶させておきながら プラスの処理をする関数、マイナスの処理を関数を実行させる Static変数があれば超初歩で簡単に済むはずなのだけど Javascriptだと変数が毎回初期化される?(宣言の仕方をよく理解してない)からどうすればいいかよくわからない 分かっている人なら初歩の初歩なのだろうけど
質問です。 ブラウザ上で動くオセロゲームを作りたいと思っています。 お互いが交互に指してを入力するので、 先手の番は後手の指し手入力は無効にしなければなりませんよね? このような通信制御はどのように行うのでしょうか? PHPとかですかね。。教えてくれると嬉しいです。
>>789 こんなんでどう
というかもちろんの事だけど画面遷移したら消えるぞ
var counter = (function (n) {
var i = n || 0;
return {
'inc' : function (n) {
return i += n || 1;
},
'dec' : function (n) {
return i -= n || 1;
},
'get' : function () {
return i;
}
}
})(1);
console.log(counter.get());
console.log(counter.inc());
console.log(counter.inc());
console.log(counter.dec());
console.log(counter.get());
>>790 websocketなんか使うと良いかも
>791さんありがとうございます。 今ちょっと込み入ってるので、後からコードの方拝見させてもらいます。 websocketですか?調べてみます。 多分また質問しあす。
>>790 データベースに現在の手番を記録しとけばいいんじゃない
>790さん それはSQLを使うという事ですか? Aさん、Bさんがオセロゲームサーバにアクセスしているとして、 Aさんの入力とBさんの入力をそれぞれ認識したいのですが、できますかね? JavaScript、Ajaxだけで認識できればなあとおもっているのですが。
796 :
Name_Not_Found :2011/10/18(火) 23:32:08.06 ID:QykaYLXk
「<---」これは無くても問題ないんだろうか?
798 :
Name_Not_Found :2011/10/18(火) 23:41:20.56 ID:QykaYLXk
おお!!ありがとう!
逆もまた然り
>>799 逆のケースがあるのは承知してるけど、
未だに考慮しなきゃならない程にある?
<div id="a" onmouseover="o(event,this)"> function o(e,t){ e.offsetX; t.style; } これをjQueryでやりたいのですが イベントをeventとして使うやり方しかわかりません 上のo関数をjQueryでやるとどうなるんでしょうか?
クリックイベントにaddeventlistenerとかで関数を関連付けした場合って、 その関数の引数から targetプロパティとかeventオブジェクトからsrcElementって取得できますか? それとアンカーつきのAタグにclickイベント設定しても普通は動きますよね?
804 :
Name_Not_Found :2011/10/19(水) 15:32:28.57 ID:d7H9MhhG
うーんもうちょっとかんばって見ます
エレメントの位置を取得する方法について教えて欲しいです offsetTopプロパティって基準要素からの距離なんですよね? この基準要素ってどうやって調べればよいのでしょうか?
解決したのでいいです すいません
IEだけoffsetTopの値が微妙に違うんですが・・ IEだけボーダーの太さ分足されてることってありますか?
それはヒミツです
812 :
Name_Not_Found :2011/10/19(水) 19:30:19.40 ID:d7H9MhhG
じゃあヒミツじゃないです
>>813 そういうことは落書き帳に思う存分書けばいいと思うよ
816 :
Name_Not_Found :2011/10/19(水) 23:26:42.27 ID:A+yt8UfX
すみません、Ajaxなのですがshift-jisで書かれたテキストファイルを読み込んだものを alertやブラウザに表示するとき、shift-jisからUTF-8に変換する方法は 現状では ADODB.Streamで変換するか、VBscriptのWSHを使うか、の二択だと考えていいのでしょうか? Escape Codec Library(ecl.js)は試行錯誤しましたが、これは文字コードを変換 することはできないと考えていいのでしょうか? 何かいい方法があれば教えてください。よろしくお願いします。
表示するだけなら、UTF-8 に変換する必要ないのでは? デフォルトで UTF-8 として解釈するから、Shift_JIS などが化けるだけで、 文字列を正しく内部処理形式に変換できれば問題ない。 可能ならば、サーバが適切な文字コードをレスポンスヘッダに含める様にする。 そうすれば、Shift_JIS でも responseText は文字化けしない。 それか、ブラウザが限定されるが、overrideMimeType を使うか。
>>817 ありがとうございます
初心者的なことですみません、文字列を正しく内部処理形式に変換するというには
どのようにすればいいのでしょうか?
サーバーのほうの設定はすでに作ってるコードの関係もありまして、
なんとかコードのほうでうまく表示できるようにしたいです
・読み込むファイルは Shift_JIS から変更不可。 ・サーバは HTTP レスポンスヘッダ内で Shift_JIS を明示しない。 ・実行環境は WEB ブラウザ。 という条件なら、xhr の overrideMimeType メソッドを使う他ないかと。 使い方は自分で調べてほしい。 当のメソッドが実装されていなかったり (IE)、実装されているはずなのに 正しく動作しなかったり (Opera) するが。
>>819 ありがとうございます
調べてみます
やはりこの条件下では一筋縄では変換できそうにないのですね・・・
>>820 いやいやライブラリ使えば一筋縄で済むから
ここで聞く前に『JavaScript エンコード』とかでググレカス
しかし今見たら俺が過去使ってた多分その手で一番万能だったEscape Codec Library:ecl.jsが数ヶ月前のサイト閉鎖でなくなってるわ
それを薦められないのはショックだがまあ他にも良さそうなのはあったから探せ
いいのが見つかり難ければ『ライブラリー』加えたり英語で探し直したりそれくらいはいろいろしてみろ
それから質問しろ、それくらいググル技術を身につけないといろいろ困るぞ
azlinkみたいなamazonの画像編集ツール作りたいんだけど javascriptで実現できる?
できるというかあれ基本全部JSじゃないのか 詳しくは知らないけど まぁCanvasなんかを使えば色々できるよ
>>821 すみません、ecl.jsはググっていて持っているのですが、
文字エンコードはできないと思ってしまっていました
やっぱりこれをうまく使えばエンコードができるんですね・・・
もう一度使い方を調べてみます
<button>をクリックすると無効になるようにする方法を教えて下さい
質問に意味を教えてくれたら
哲学だな
disabledをtrueにすればいいよ
>>824 いや、読み込んだ時にはShift_JISをutf8だとおもって変換をかけてしまっている状態だから無理。
不正なコードってことで、0xfffdに変わってしまう。(Opera/Firefox/Chrome)
たまたまutf8で解釈できるコード列だったなら、化けずに変換できるだろうけれど。
iframeによみこんでみるとかどうよ。
「iframe ajax 文字コード」でググると出てくる方法だけど。
Operaの記事だけど、iframeのは他のブラウザでもいけるとおもう。
GETメソッドでリクエストを送信するにはどうすればいいですか?
HTML使わないで、javascript使ってって意味だよね?
はい、そのとおりです 今ググってたらXMLHttpRequestってのがでてきたんですが、これしかないんでしょうか? 互換性で問題でてきませんかね?
主要ブラウザなら問題ありませんが よそのサイト様との通信はできませんよ
835 :
Name_Not_Found :2011/10/21(金) 03:45:04.30 ID:Nn1RPyNn
document.writeとか
837 :
Name_Not_Found :2011/10/21(金) 03:58:37.37 ID:Nn1RPyNn
document.write("hoge")とすると、 ソースには hoge ではなく、document.write("hoge")が表示されるのですが 他の方法があるのでしょうか?
document.body.innerHTML
HTMLのソースを開いた時に表示されてる内容と 同じ文字列だけ(HTML等ぬきで)を表示させるの無理だよ
840 :
Name_Not_Found :2011/10/21(金) 04:51:00.88 ID:Nn1RPyNn
ということは、javascriptでページの概要を作る→外部ファイルに書き出す →書き出されたファイルを読み込み、閲覧 という流れにするしかないということですね。
>>840 JavaScriptでファイル書き出しは出来ない
node.jsを使おうか
843 :
842 :2011/10/21(金) 09:20:33.81 ID:???
ごめん、javascriptでやりたいって質問だったのね。
844 :
Name_Not_Found :2011/10/21(金) 09:49:54.96 ID:iT1pD1mb
いやいやできるだろ postとgetメソッドしかしらないんかいや?
PUTメソッドはサーバで許可してある必要があるだろ デフォルトはオフ
rangeを使用して以下のようにテキストのハイライトをしたのですが var spanTag = document.createElement("span"); spanTag.style.backgroundColor = "#bfdaff"; range.surroundContents(spanTag); このハイライトを除去するにはどのような方法があるでしょうか
847 :
835 :2011/10/21(金) 14:48:35.99 ID:Nn1RPyNn
>>842 そうです。そんな感じです。
phpを使わないと無理かなぁと思っていたのですが
>>841 node.jsを調べてみようと思います。
ありがとうございます。
>>846 spanTag.style.backgroundColor = "";
>>830 遅くなってすみませんでした、ありがとうございます
iframeのほうでcharsetをして、そこに書くという方法でしょうか
やはりそのような方法で対処するのがベストの選択かもしれないですね
いろいろ教えていただいた方法を検討しつつ頑張ってみます
>>849 ちょとちがうきが。iframeのほうでcharsetをしてってのがよくわからん…
(見えない)iframe内に読み込んで、その内容をjavascriptで読むってことです。
まあ、参考に挙げたページのサンプルコードで試してみて。
>>850 すみません、見つけたページが違っていたようでした
この方法ならいけそうです!
ありがとうございます
853 :
Name_Not_Found :2011/10/21(金) 20:32:48.15 ID:9wMD2g9s
>>841 まさにこれです。
ありがとうございます。
以下のように修正したいのですが <span class="ringo"><span class="ringo">りんご</span></span> ↓ <span class="ringo">りんご</span> document.getElementsByClassName("ringo")を利用して うまく修正可能でしょうか
getElementsByClassName が実装されて入れ歯化膿だけど、 そんなことにならない様にするのが先。
>>855 可能だけどその構造にする仕組みを改善するのが先じゃないかな
Javascriptでクラスは使うなよー 要素にクラスを追加するのは別にかまわんが、クラスで取得しようとするとモンの凄い不安定なコードっていう 違う値が取得されたり、値が取得できなかったりうんぬん
んじゃーjavascriptでclass(みたいなの)getするにはどうしたらいいの? <div id=a1"></div> <div id=a2"></div> <div id=a3"></div> <div id=a4"></div> <div id=a5"></div> のa2 a4 a5をgetしたい時とか classつけるんじゃなかったらclassの変わりに何で囲ったり何をつければいいの?
SelectorAPIがあるなら var ringoList = Array.prototype.slice.call(document.querySelectorAll(".ringo > .ringo")); for(var i = 0; i < ringoList.length; i++) { ringoList[i].parentNode.appendChild(document.createTextNode(ringoList[i].textContent)); ringoList[i].parentNode.removeChild(ringoList[i]); }
>>858 それはさすがにコードの問題だろう
不安定にはならない
>>860 sliceが不要な気が。forEachを使うならわかるけど…。
Array.prototype.forEach.call(document.querySelectorAll(".ringo > .ringo"), function (ringo) {
var parentNode = ringo.parentNode;
parentNode.parentNode.replaceChild(ringo, parentNode);
});
SelectorAPIの返すリストってliveだっけ?と思いながら書いたコードだからあまり気にしないでくれ
Array.prototype.forEach.call(document.querySelectorAll(".ringo > .ringo"), function (ringo) { var parentNode = ringo.parentNode; if (parentNode && parentNode.parentNode) { parentNode.parentNode.replaceChild(ringo, parentNode); } });
おお、querySelector, queryStlectorAllなんてあったのか IE7以下のみ非対応と言えるくらい普及率高いし、ブログのcssから入った奴(居るのか知らんが)には便利そうだ しかし取得速度的にはXPathどころかgetElementsよりも遅いのか
そりゃそうだろう
ノード辿らないと取れない部分で使うと速度が上がるし分かりやすくなる
var sss = document.styleSheetsで全部のスタイルシートを読み込んで sss[i].cssRulesで外部ドメインのスタイルシート読もうとした時点でFirefoxなどでセキュリティエラーが出るのですが この場合ループの中でtry-catchを使って無視するようにするしかないのでしょうか?
StyleSheet.href確認すれば
>>860 全く関係ないですが
昔、lingobakoとゆう配列名を有名サイトでみたことがある
>>870 色々試してみましたが、Firefoxではクロスドメインだけでなく
ローカルのhref="../site2/css.css"みたいなスタイルシートもダメみたいで結構厳しいみたいです
ローカルで使う必要があるん
指定された座標(x,y)が4点(x1,y1)(x2,y2)(x3,y3)(x4,y4)の範囲内か 判断する関数・方法があれば教えて下さい。 長方形だけではなくて台形・菱形でも判断できる方法が知りたいです。
アンカー付きのaタグをクリックするとある動作をするように設定したいんですが、 その動作をイベントで設定しています。 でもクリックするとデフォルトの動作で、アンカーのところへジャンプしてしまいます。 このジャンプをさせないようにするにはどうすればよいでしょうか? target.addEvenListener("click",test,true); ↑こうやってイベント設定してて、 関数は、 function test(){ 〜処理〜 } って書いてます。 test関数の中でreturn falseをしてもジャンプしてしまいました。 ご教授願います。
>>875 preventDefault で検索して勉強すれ。
>>874 JavaScript と関係ないじゃん。(x,y)が線分(x1,y1)-(x2,y2)の左右どっちに
あるかは式(x2-x1)(y-y1)-(y2-y1)(x-x1)の符号で判別できる。これを4辺についてやる。
>>876 不完全です
4点の指定される順番によっては辺がクロスしたりもする(三角形2つになる)とき等どう対応していいのかわかりません
このスレの規定でコードを丸ごと載せられないのであれば外部サイトにupでも構わないので関数を教えてください
JavaScript を自ら学ぶ人のための質問スレッドです。 それにその内容だとJavaScriptの問題じゃないスレチ
>>877 4点だけで正方形の形が決まる訳でないので、判定不可能。
正方形じゃなくて、四角形w
>>879 入力された順番に結んでいくなら可能でしょ
まあ質問者の説明が不十分だし答える必要なし
そんな志の高い奴がこんなことで躓くかw
>>874 isPointInPathを使えばできるかもしれない
>>882 たのむそれの右から左に放物線を描くようにボールが流れるサンプルを書いてください
>>877 四角形ならばこんなこんな感じぢゃだめですか
function contains(int touchX, int touchY) {
return (touchX >= rectOriginX) && (touchY >= rectOriginY) && ((touchX - rectOriginX) < rectWidth)
&& ((rectOriginY - rectY) < rectHeight);
}
以下のようにspanTagを減らしてbackground-color:を編集するにはどうすればいいでしょうか
<span class="ringo" style="background-color:rgb(255,255,0)"><span class="ringo" style="background-color:rgb(255,255,0)">りんご</span></span>
↓
<span class="ringo" style="background-color:rgb(0,0,0)">りんご</span>
>>874 四角形を三角形の集まりだと思って判定しろ
点1〜4の中心点Pを取得して△A12P,23P,34P,14Pのどれかに入ってるか判定すればok
辺がクロスしてる場合は必要な二つの△だけ判定すれば良い
三角形の判定についてはググレ
>>888 初めて書き込んだんだけど
スレの趣意と違ってたらごめん
あやまってもゆるさない
>>890 横から誰だよw
>>889 いや別に。
>>821 のレスは、JavaScript に関して浦島太郎的な感じがした。
それとレスの文面が似てたから。
>>874 4点のクリッカブルマップ作ってイベント発火させるのが楽なんじゃないか
ここ最近の ゲーム関連っぽい投げっぱなし質問者かな
yの位置の水平線と各線分との交点をもとめて、xより左にある交点が奇数だったら範囲内…とか。 線分が水平になるケースを気をつければいけると思う。全然検証してないけど。
>>875 <a href='javascript:test();'>test</a>
>>875 function test(e) {
e.stopPropagation();
e.preventDefault();
}
898 :
874 :2011/10/23(日) 20:20:22.09 ID:???
>>876 の方法で解決しました。
方法の質問でどこで指定以下わからずにここで聞いてしまいました。
ありがとうございました。
899 :
Name_Not_Found :2011/10/23(日) 22:27:05.58 ID:QvnC7Hy9
>>874 function f1(x,y,x1,y1,x2,y2,x3,y3) {
var xp = x3 - x1, yp = y3 - y1;
var r = x2 * yp - xp * y2;
if (r == 0) return -1;
return (x * yp - xp * y) / r;
}
function f2(x,y,x1,y1,x2,y2,x3,y3) {
var a = f1(x,y,x1,y1,x2,y2,x3,y3); if((a<0)||(1<a)) return false;
var b = f1(x,y,x1,y1,x3,y3,x2,y2); if((b<0)||(1<b)) return false;
return (a + b <= 1);
}
function f3(x,y,x1,y1,x2,y2,x3,y3,x4,y4) {
if (f2(x,y,x1,y1,x2,y2,x3,y3)) return true;
if (f2(x,y,x2,y2,x3,y3,x4,y4)) return true;
if (f2(x,y,x3,y3,x4,y4,x1,y1)) return true;
if (f2(x,y,x4,y4,x1,y1,x2,y2)) return true;
return false;
}
亀レスってレベルじゃねーぞ
嫌いじゃないぜ鈍亀
alert(f3(5,6,10,10,0,10,0,0,10,0)); // false 使い方間違ってるのかな…。
それ、どう見ても でたらめな関数だから無理だろ
かわいそうじゃないか、そんなこと言ったら。
>>899 f1が微妙に間違ってる
正しくはこう
function f1(x,y,x1,y1,x2,y2,x3,y3) {
var xp = x3 - x1, yp = y3 - y1;
var r = (x2 - x1) * yp - xp * (y2 - y1);
if (r == 0) return -1;
return ((x - x1) * yp - xp * (y - y1)) / r;
}
HTMLの質問かもしれませんが <div onmouseover="o()" onmouseout="p()"> あああああああああああああ<br> ああああああああああああ </div> の場合は問題ないのですが <div onmouseover="o()" onmouseout="p()"> <span> あああああああああああああ<br> ああああああああああああ </span> </div> とすると、文字の上に来るとonmouseoutが発動します <span>で囲っても前者のように問題ないようonmouseがその要素全体(子要素含む)に反映されるようにしたいのですが 解決策あるのでしょうか?
もっと他に*とか使えばいいんじゃね? 試してないからわからないが
>>906 Event.target === Event.currentTarget
910 :
Name_Not_Found :2011/10/24(月) 10:15:05.18 ID:nJps/1JE
ざっくりした質問で申し訳ないんですが インラインボックスの大きさって計算出来るものですか?
>>910 CSSOM規定のプロパティで取得できたような
912 :
905 :2011/10/24(月) 11:39:27.26 ID:???
>>909 すみません、もーちょっとヒントを
イベント関係のプロパティとか知識足らずで
>>906 前者でもmouseoverが発火するはずだけど
914 :
Name_Not_Found :2011/10/24(月) 12:38:05.15 ID:nJps/1JE
915 :
Name_Not_Found :2011/10/24(月) 13:44:08.53 ID:fjginknY
質問 <script type="text/javascript">〜って <head>内と<body>内どっちに書いたほうが良いですか? ※どっちでも良いはなしでお願いします
どっちでもいい そのスクリプトの中に何を記述するかで場所が決まることもある
</html>の下
>>906 だけどさ
onmouseenterとonmouseleave使えば済む話じゃね?って思ったんだが
それを言わない辺りコレ不具合でもあんの?
window.onload=function(){} を addEventListenerを使ったコードに書き換えたいのですが window.addEventListener('load', function(e){ alert(1); }, false); と addEventListener('load', function(e){ alert(1); }, false); どちらも動きますがどちらで書くのが正しいでしょうか?
922 :
Name_Not_Found :2011/10/24(月) 17:00:59.05 ID:RWqwsARi
>>921 ぶっちゃけ動けばどっちでもいいけど
alert('hoge');をwindow.alert('hoge');って毎回書く人?
window.alertは書かないけど、 addEventListenerは対象をはっきりさせるのにwindowって毎回書いてるな。
927 :
Name_Not_Found :2011/10/24(月) 19:44:27.59 ID:nJps/1JE
俺も どうせ圧縮かけたら消されるんだろうけど
928 :
922 :2011/10/24(月) 19:59:59.29 ID:???
>>924 グリモンでfileおけるんですか?
security error1000とかグリモンでやってもでてきます
なんでwindowを書いても書かなくてもaddEventListenerに登録されるんですか? 普通エラーになるものじゃありませんか?
930 :
Name_Not_Found :2011/10/24(月) 20:17:06.01 ID:nJps/1JE
>>929 何も書かなかったらwindowのプロパティ(メソッド)
って決まりがあってだな
931 :
Name_Not_Found :2011/10/24(月) 20:44:05.36 ID:Pzr5r4WM
<form method="post" action="test.php" name="sample" onSubmit="return check()"> <input type="text" name="test" id="test"> <input type="submit" value="send"> </form> <form method="post" action="test.php" name="sample" onSubmit="return check()"> <input type="text" name="test" id="test"> <input type="submit" value="send"> </form> としてonsubmitには if(document.sample.sample.value == ""){ test_question.style.backgroundColor = '#fbe7eb'; } としているのですが、formが1つの場合はちゃんと背景色が変化しますが、上記のように2つ以上の場合は機能しません。 <form>から</form>の間をみていると思っていたのですが、全部のformを見てsampleが複数あるので機能していないのでしょうか?
932 :
931 :2011/10/24(月) 20:45:02.29 ID:Pzr5r4WM
申し訳ありません。 input typeの部分のnameはtestではなくsampleの間違いでした
>>928 無理だよ
>>929 個人的な解釈で書くと
Windowオブジェクトはグローバル空間とでもいうのかな?にあり
(厳密にはWindowでは無いらしいけどね)
オブジェクトに属さないメソッドはグローバル空間に登録されると・・・
で、呼ぶ時も同じ原理でよばれる・・・
こんな感じじゃないのかな・・・細かいところは大いに違うだろうけどw
書き込んだあと自分で読むと何を言いたいかわからんな・・・ Windowがグローバルオブジェクトでオブジェクトに属さないメソッドの呼び出しは 現在のスコープ内で解決できない場合さらに上位のスコープへ解決しにいく で、最終的にたどり着くのがWindowのグローバルオブジェクトになる だからスコープ内にaddEventListener関数作っちゃうと オリジナルのaddEventListenerが呼ばれる
>>931 sample という名前の form が 2つあるだろ。
だから、その書き方だと動かない。
936 :
931 :2011/10/24(月) 22:03:47.47 ID:EXOsCNuM
>>935 ありがとうございます。
確かによく見てみたらそうですね。
formの中身は動的に生成されているのでform名に連番とかつければいけそうですが
formの数は内容によって変動します。
そうなるとjavaの方で連番を読み取ったりする必要が出てきそうですね。
登録情報を個別に変更出来るようにしているのでformが多数あるんですが
こういう構成は時折見かけます。
その場合はform名やそれを判別するjavascriptはどのようにすればよいのでしょうか?
手法でもよいのでアドバイスいただけないでしょうか。
悪いこと言わないから、POST 先の php に全部投げちゃいなさい。 JavaScript 得意じゃなさそうだし、off にされていたら意味ないから。
>>928 userChrome.jsならいけるんじゃね
939 :
Name_Not_Found :2011/10/25(火) 01:07:48.77 ID:Pzk2/AfC
>>936 <form>要素内の<input><select>を全部拾ってきて
valueがあるかどうか、くらいは汎用的にみれるんじゃないか?
>>936 onSubmit="return check(this)"
として function check(o) { if (o.sample.value == "") 〜〜〜〜
みたいなのでいいんでは。
test_questionがどうなってるのかわからんので、あれだけど。
でも、formを生成するときにname等に連番つけるほうが楽だと思うけどね。
インスタント検索が使えないからってブラウザ変えるような奴はいないだろw むしろOFFにしてる奴も多いし使えなくなって便利なもんだ
インスタント検索が脱IE8の追い風にはならなんだろ あと5年はIE8に悩まされそうな気がする
脱IE8は早くなんとかならないかなぁ・・・。
インスタント検索デフォでONになっててうざいだけだからな 普段使わないパソコンでパパッとネット死体とき、むしろIEの利用が増えるんじゃないか IE8による検索自体をブロックして欲しいわ
インスタント検索て何の事かとおもたらあのうざい機能か
947 :
Name_Not_Found :2011/10/25(火) 08:27:28.57 ID:ZKGhv+yz
IE8で訪問済みリンクの色が変わらなくなりました。 IE6では下の1でも色が変わっていたのに、 IE8では2のようにダミーのURLをつけてもダメ。 なんででしょうか。 1. <a href="bar();"> 2. <a href="foo.html" onclick="bar();return false;"> bar()でsubmitしています。
風邪で寝込んでいる間に950目前になった。今回テンプレ変更はなしでいいよね。新スレは 975超えたら。
951 :
947 :2011/10/25(火) 12:28:16.01 ID:???
>>948 ありがとうございます。
同じ方法で回避できました。
IE6が特殊なのですね。
test.html function hoge() { 〜 return false; } <a href="#" onclick="hoge();">パターン1</a> <a href="test.html" onclick="return hoge();">パターン2</a> <a href="test.html" onclick="hoge(); return false;">パターン3</a> <a href="javascript:void(0)" onclick="hoge();">パターン4</a> <a href="javascript:void(0)" onclick="return hoge();">パターン5</a> <a href="javascript:void(0)" onclick="hoge(); return false">パターン6</a> <a href="javascript:hoge()">パターン7</a> <a href="javascript:void(hoge())">パターン8</a> 推奨パターンは何番?
<span id="hoge">パターン9</span> document.getElementById("hoge").addEventListener("click", hoge, false); function hoge(event) {}
名前空間用の変数を用意して、その直下にメソッドを付けるような書き方をした場合、 それらのメソッドの中でthisキーワードを介して同じ名前空間内の別のメソッドを呼ぶのと、 名前空間から別のメソッドを呼ぶ場合とではどちらが良いですか? thisでやってしまうと、ローカルスコープ内でエイリアスを作った場合にthisの参照先が変わってしまって 動かなくなると思うんですが、thisでやる場合のメリットってなにかありますか?
955 :
Name_Not_Found :2011/10/25(火) 22:11:04.45 ID:HZcWPYus
複製した時とか?
質問です、というか疑問なんですが 要素を追加する時 var element = document.createElement('div'); element.id = "id"; element.innerHTML = "hogehoge"; element.style.backgroundColor = 'red'; とやるのが一般的ですが innerHTML="<div id=\"id\" style=\"background-color:red;\">hogehoge</div>"; とやったほうが解りやすいと思うのですが このやり方だと不具合があったりするのでしょうか?
それがわかりやすいと感じる範囲ならそっちでもいい。(innerHTMLが非標準だったりするけど、大抵は動くからOK) 入り組んだものを作る時スピードが必要ならcreateElementじゃないと遅かったり。 あとは、innerHTML+=〜だと再描画がかかるけど、appendChildだと再描画されない。
html5からinnerHTMLって標準になったって聞いたのですが使わないほうがいいですか?
>>957 なるほどー、そういう問題でしたか
ありがとうございます。ナットクです
確かに全部再描写するより、一つ追加させた方が早いですね
追加するときはそれでいいね、わかりやすいし 自分なら面倒だからライブラリに任せる jQuery(document.body).append("<div>hello world</div>");
>>958 HTML5で標準になってたとして、それ以前は切り捨てOKでいいなら使えばいいんじゃないかな。
>>958 ,961
innerHTMLはガラケーを含む殆どのブラウザで昔から使えるしOK
createElementの方がここ1年くらいでだいぶ改善されたけど基本重いから
古いブラウザやマシンのこと考えるんならそっちの方が非推奨
CREATE中はJSで負荷をかけてる分だけ描画が完全に止まるから
CREATEは簡潔に、APPEND時にブラウザエンジン側に描画と非同期にコストを払わせるinnerHTMLの方がユーザーにとっていい
Javascriptを体験しながら勉強しているのですが エレメント.style.backgroundColorの backgoroundColorを指定するのにbackground-colorとか全部小文字にしてて上手く行かず backgroundColorと書けばいいと判明するのに結構時間がかかりました 皆さん、こういうのって全部覚えているのでしょうか? それともこういうのが全部ズラーっと並んでる便利なサイトとかがあるのでしょうか?
-は引き算として扱われるから、すべての-直後の一文字を大文字にすれば解決。 あとは、style["background-color"]=もあり。
そんな法則があったんですか だからbackground-Colorとかでダメだったんですね ありがとうございます
×すべての-直後の一文字を大文字に ○すべての-直後の一文字を大文字にして-を削除
初めて知った。今まで全部テキトーに覚えてた
>>962 そのためにドキュメントフラグメントが用意されてるだろ?
innerHTMLはevalみたいで何かやだ
tableの内容の書き換えが面倒すぎるinnerHTML使いたい
0123456789 にinnerHTML +=0すると もう一度01234567890って最初から全部描写するのがなぁ 今は全然問題ないけど、2000年頃のPCには結構なタイムラグが
http://javascriptist.net/docs/libraries_colorpicker.htmlで紹介されているようなカラーピッカーを作りたいのですが これはどのように作られているのでしょうか?
rgbで
0,0,0→0,0,255
1,0,0→1,0,255
2,0,0→2,0,255
略
255,255,0→255,255,255
としてforでループしながらdivを生成して、生成したdivにスタイルで対象のrgbを指定していってますが
処理が重すぎて固まってしまいます
マウスの座標から一発で計算できるとは思いませんかそれ divの代わりに同じように見えるグラデーション画像一枚用意すれば済むでしょ
画像用意してその要素上の座標から割り出すってのが一番いいな
でもjavascriptのライブラリに画像ファイルが見当たりません
Color picker(ADV含む)以外見たが全部画像使ってるじゃんよ
ライブラリの中身くらい自分で見ろよと思う
流石にjQueryとかjQueryUIとかまでは解るが そーいうメジャーとは言いがたいライブラリはちょっとなぁ
ライブラリを使ったサンプルページのソースを見てないんかい
983 :
Name_Not_Found :2011/10/26(水) 16:22:00.97 ID:9NHChTR2
>>979 エレメントの追加と考えるからいかん、ノードの追加なんだ
エレメントノードでもテキストノードでもやることは同じなんだ
ブラウザで右クリックしても画像を保存が出てこなかったので画像じゃないと思ってました jQuery color pickerをダウンロードしたところライブラリをダウンロードしたら画像だったことを確認しました 失礼いたしました そこで画像情のマウスで計算できそうですが画像の色が変わるのはcanvasでRGBを変換して作るのが妥当でしょうか?
んまーそういうライブラリってのは「誰にでも、どんな状況でも使えるように」してあるから 構造とかを理解して自分で1から作ると容量が1/10以下になったりするから そーやって経験積むのもいいかな
canvasにかわる代替手段があるならそちらを優先して使えって種子じゃなかったcanvasって
>>983 >>971 の例だとこんな感じ?
element.appendChild(document.createTextNode('0'));
element.childNodes[0].data+=0;
Lv足りなくて次スレ建てられません。どなたかおねがい〜。 今回はテンプレの変更は無しです。
ajaxで返事が帰ってくるのを待ってる時によく見るくるくる回るようなやつはどうやって実装されているのでしょうか? よく見かけるので多分プラグインか何かであると思いますが。 twitterでタイムライン読み込むときや、いろんなサイトで画像や動画を読み込む時などに見かけるやつです 名前わからなくてどう調べれば良いのかわかりませんでした、よろしくお願いします。
通信開始でくるくる表示(gifアニメかな) 返事が帰ってきたらgif非表示・削除
jQuery prettyLoader
早く誰か次スレたてろや
今レベル上げてるから待て。 専ブラ使わず、web ブラウザもころころ変えてたせいだ。
996 :
Name_Not_Found :2011/10/26(水) 21:58:21.77 ID:9NHChTR2
よし立ててくる
997 :
Name_Not_Found :2011/10/26(水) 21:59:52.13 ID:9NHChTR2
とりあえず立った これからテンプレ各種コピる
レス番・・・
999 :
Name_Not_Found :2011/10/26(水) 22:04:03.93 ID:9NHChTR2
まぁ、良いってことよ。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。