C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[9]: ウェブブラウザで編集中にドラッグ&ドロップを禁 [1]


(過去ログ 69 を表示中)

[トピック内 30 記事 (21 - 30 表示)]  << 0 | 1 >>

■40387 / inTopicNo.21)  Re[17]: ウェブブラウザで編集中にドラッグ&ドロップを禁
  
□投稿者/ RT (107回)-(2009/08/24(Mon) 21:06:17)
> 単純な質問。
>
> 今まで Google(か他のエンジン)でどんな検索語(句)使ってます?  
>
> 検索語句が漠然としてて、あまたある情報を絞り込めてないだけなのでは? (目の前に宝の隠された山があるのに。)

contentEditable,C#,webBrowser,SetAttribute,.Document.GetElementFromPoint ,.Document.GetElementById,.Document.Body等です。

> ヒントをほしい、アドバイスをほしい、と書いてるけど、なんだかんだ言って 限りなくピンポイントな答え(にちかいもの)が誰かから提供されるまで満足できないんじゃないかなぁ?   

ピンポイントな答えじゃなくてもいいんです。自分で見つけることができれば。
引用返信 編集キー/
■40388 / inTopicNo.22)  Re[18]: ウェブブラウザで編集中にドラッグ&ドロップを禁
□投稿者/ 通りすがり2 (2回)-(2009/08/24(Mon) 21:36:30)
たとえば、検索する際に、contentEditable だけじゃなくて contentEditable Applies ってな感じで、 「ちょーーっとだけ」考えて、「ちょーーっとだけ」手を加えるだけでも、簡単にポイントが絞り込めるし、実際、これやるだけで、先の(4)〜(6)の問いに、「わかりません」なんて答えなんか出なかったと思うけどなぁ。






引用返信 編集キー/
■40389 / inTopicNo.23)  Re[19]: ウェブブラウザで編集中にドラッグ&ドロップを禁
□投稿者/ RT (108回)-(2009/08/24(Mon) 21:54:43)
No40388 (通りすがり2 さん) に返信
> たとえば、検索する際に、contentEditable だけじゃなくて contentEditable Applies ってな感じで、 「ちょーーっとだけ」考えて、「ちょーーっとだけ」手を加えるだけでも、簡単にポイントが絞り込めるし、実際、これやるだけで、先の(4)〜(6)の問いに、「わかりません」なんて答えなんか出なかったと思うけどなぁ。
>

Appliesは、思いつきませんでしたが、手は加えていますよ。
引用返信 編集キー/
■40392 / inTopicNo.24)  Re[20]: ウェブブラウザで編集中にドラッグ&ドロップを禁
□投稿者/ Jitta on the way (407回)-(2009/08/24(Mon) 22:38:39)
質問をするときには、質問に至る背景があります。質問文に背景が書かれていないと、かかれている内容から背景を想像します。なぜそうするかというと、背景によって異なった回答が必要になるからです。
いま、RTさんの背景を想像するに、書かれたことを右から左へコピーしているだけ、と思われるのです。
このスレッドの質問、なぜ、するに至ったのでしょう?
contentEditable にした要素だけが編集できる。つまり、contentEditable にしない要素は編集できない。ならば、最初の質問にあったように、ユーザーが編集したい所をクリックするから、そこだけ contentEditable にするようにすれば、このスレッドの質問は発生しなかったのではないか、と思います。
それでも、魔界の仮面弁士さんがふれられていますが、どの様にしてイメージを差し替えるかで、この質問は必要かも知れません。しかし、最初の投稿の様なものではなく、「イメージを差し替えたいが、場所は変えたくない」という内容だったことでしょう。


ところで。
編集してよいエリアと、してはいけないエリアがあるのではないですか?データは変えてもいいでしょうが、データのラベルを変えてはいけないですよね。そういうものの区別をどうやって行うか、考えてあるのでしょうか。
もっと根本的に。本当にユーザーが手でデータを編集しなければならないのでしょうか。
引用返信 編集キー/
■40395 / inTopicNo.25)  Re[21]: ウェブブラウザで編集中にドラッグ&ドロップを禁
□投稿者/ RT (109回)-(2009/08/24(Mon) 22:48:46)
No40392 (Jitta on the way さん) に返信
> 質問をするときには、質問に至る背景があります。質問文に背景が書かれていないと、かかれている内容から背景を想像します。なぜそうするかというと、背景によって異なった回答が必要になるからです。
> いま、RTさんの背景を想像するに、書かれたことを右から左へコピーしているだけ、と思われるのです。

コピペだけじゃなく、自分自身でも、努力して発見してますよ。

> ところで。
> 編集してよいエリアと、してはいけないエリアがあるのではないですか?データは変えてもいいでしょうが、データのラベルを変えてはいけないですよね。そういうものの区別をどうやって行うか、考えてあるのでしょうか。

データのラベルとは何の事ですか?ファイル名の事ですか?

> もっと根本的に。本当にユーザーが手でデータを編集しなければならないのでしょうか。

しなくてはいけないんです。
引用返信 編集キー/
■40397 / inTopicNo.26)  Re[7]: ウェブブラウザで編集中にドラッグ&ドロップを禁
□投稿者/ 魔界の仮面弁士 (1250回)-(2009/08/24(Mon) 23:14:15)
2009/08/24(Mon) 23:26:24 編集(投稿者)

編集可能な要素は、それ自体の位置をドラッグで変更できる事はご存知ですよね。
しかしそれを、編集不可能な要素の中にドロップさせることはできません。
また、編集不可能な要素をドラッグで移動させることもできません。

そのため今回は、「全体としては編集可能、ただし一部だけ編集不可」
あるいは「全体としては編集不可、ただし一部だけは編集可能」の
いずれかの状態にする事を目標としています。


しかしながら、どの要素を編集可能にして、どの要素を編集不可能にするべきかは、
編集対象の HTML の構成によって異なりますので、解決に至るヒントまでは出せても、
具体的なコードまでは提示することができません。その点は御了承ください。


No40328 (RT さん) に返信
>> (3) .Document.Body や .Document.GetElementFromPoint や .Document.GetElementById などが、
>>   それぞれのタグ(要素)を HtmlElement クラスとして返す事は把握されていますか?
> 確認致しました。

では次に、「HtmlElement クラス」を返すメソッドやプロパティには、どのようなものがあって、
それらはどのようにして使うものなのかを、順に調べていってみてください。


今回の場合、contentEditable の状態を一部の要素だけ変更しようとしていますから、
その変更したい要素がどれであるのか、指定してあげなければいけませんよね。

そのためには、目的の要素を「HtmlElement クラス」として取り出す必要がありますので、
個々のメソッドやプロパティの使い方を学びとっていかなければなりません。


また、複数の HtmlElement をコレクション(HtmlElementCollection クラス)として
返すメンバも存在しますので、そうしたプロパティやメソッドも併せて調査してみてください。

HtmlElementCollection に対しては、先の No39679 でも説明していますように、
それらの中の何番目の要素かを、[0] といった表現で指定したり、あるいは foreach で
列挙したりすることで、目的の要素(HtmlElement)を取り出すことができるはずです。

# HtmlElementCollection を返す物としては、先の GetElementsByTagName メソッド以外にも、
# Children プロパティや All プロパティなどがあります。



>> (4) 今回使用している contentEditable が、<body> 以外にも利用できる事はご存知でしたか?
> どうやって利用出来るのかわかりません。

contentEditable は、HtmlElement クラスの SetAttribute メソッドで設定できます。

対象となる HtmlElement が、<body> でも <div> でも <textarea> でも、SetAttribute の
使い方は一緒です。相手が <body> なら、
 HtmlElement tag = webBrowser1.Document.Body;
 tag.SetAttribute("contentEditable", "true");
などと書けますし、<form> なら、
 HtmlElement tag = webBrowser1.Document.Forms[0];
 tag.SetAttribute("contentEditable", "true");
などと書けます。

ですから GetElementsByTagName や All や Images や NextSibling や Links などといった、
各種メンバを駆使して、目的となる HtmlElement にたどり着くことが現在の最重要課題です。
HTML の内容に併せて、それぞれのメンバを使い分けてみてください。


>> (5) contentEditable は文書全体に対して摘要されるわけでは無く、要素ごとに
>>   個別に設定可能である事はご存知ですか?
> 設定の仕方がわかりません。

上記 (4) の解説に示したとおりです。


>> (6) contentEditable を設定できる要素と、設定できない要素がある事はご存知ですか?
> どのよう要素が設定出来ない要素なのかわかりません。

No40283 で示した URL の内容を、もう一度良く読み返してみてください。
ページの下の方にある「Applies To」の一覧が、『設定可能な要素』の適用表です。


>> (7) contentEditable に指定できる値が、"true" / "false" / "inherit" の
>>  3 種類である事は調査済みですか?
> はい。
>> (8) その 3 種類の値のそれぞれの意味を説明できますか?
> 編集ON,編集OFF、継承ですね。

その通りです。
初期設定は inherit (継承) になっており、上位の要素が true または false になると、
その値が下位の要素にも引き継がれるようになっています。



>> (9) 上位のタグとその子孫のタグとで contentEditable の設定値が異なっていた場合、
>>   どのような動作になるのかを、実際に試して確認してみましたか?
> タグごとの設定がわからないので、まだ確認しておりません。

少なくとも、<body> の HtmlElement に対して適用する事はできていますよね。
また、マウス座標にある HtmlElement を得る方法も知っておられますよね。
No40377 では、ActiveElement を使う方法も見つけられたようです。

という事は RT さんは、少なくとも 2 つ以上の要素を HtmlElement として
取り出す事ができているわけです。

ですからここまでの知識だけでも、上位の要素と下位の要素それぞれに対して、
異なる contentEditable を SetAttribute するという実験を行うだけの知識は
既に身につけておられるはずですよ。
引用返信 編集キー/
■40402 / inTopicNo.27)  Re[22]: ウェブブラウザで編集中にドラッグ&ドロップを禁
□投稿者/ Jitta on the way (410回)-(2009/08/25(Tue) 06:57:18)
No40395 (RT さん) に返信
> ■No40392 (Jitta on the way さん) に返信
>>質問をするときには、質問に至る背景があります。質問文に背景が書かれていないと、かかれている内容から背景を想像します。なぜそうするかというと、背景によって異なった回答が必要になるからです。
>>いま、RTさんの背景を想像するに、書かれたことを右から左へコピーしているだけ、と思われるのです。
>
> コピペだけじゃなく、自分自身でも、努力して発見してますよ。
それが見えないから、何度も指摘しているのですが。。。


>
>>ところで。
>>編集してよいエリアと、してはいけないエリアがあるのではないですか?データは変えてもいいでしょうが、データのラベルを変えてはいけないですよね。そういうものの区別をどうやって行うか、考えてあるのでしょうか。
>
> データのラベルとは何の事ですか?ファイル名の事ですか?

データが、データだけで存在しているわけではないですよね?「名前:はなおかじった」「性別:男」のように、データの意味/分類を表す文字列がついているでしょう。その文字列のことです。


>>もっと根本的に。本当にユーザーが手でデータを編集しなければならないのでしょうか。
>
> しなくてはいけないんです。

それは、なぜですか?「ユーザーがそう要望しているから」は、システムエンジニアとして正しい答えではありません。ユーザーがなぜそう要望しているか、要望の裏の原因を見て、判断します。
最初の質問が、テーブル要素の td 要素にこだわっていたので、自動化出来るのではないか、あるいは特定の位置にデータを埋め込んで HTML を作ればいいのではないかと考えています。

あと、HTML と JavaScript の本くらいは、手元に置いておきましょう。
それから、体系的に学べるように、学習の機会を模索しましょう。ピンな学習では身に付きません。
引用返信 編集キー/
■40424 / inTopicNo.28)  Re[9]: ウェブブラウザで編集中にドラッグ&ドロップを禁
□投稿者/ 通りすがりん (2回)-(2009/08/25(Tue) 18:17:44)
No40331 (RT さん) に返信
> 2009/08/24(Mon) 11:11:38 編集(投稿者)
> 2009/08/24(Mon) 11:11:05 編集(投稿者)
>
>>上記のわからないことについて検索したり先輩に聞いたり、本屋で本を読んだりして学習してください。
>>「わかりません、教えてください」を連呼しているようですと学習意欲のない教えてクンだと思われますよ。
>
> それなりに調べさせてもらった結果、わからないと言ってます。
> ちゃんと記事を読んでもらえばわかりますが、教えてもらったページに対して、情報の引き出し方がわからないと言ってますので。

貴方がやらなくてはならないことなのであれば「それなり」程度で済ませてないで全身全霊をかけるぐらいの勢いで調べて欲しいです。
また調べた結果分からないといっていますが、貴方の投稿を見るだけでは何をどう調べた結果分からないのかが読み取れません。
調べた内容についてもきちんと概要を書いておかないと第三者には貴方が調べたのかどうか分かりません。

「それなりに」調べて、「それなりに」試して、「それなりに」質問をしているようですと、得られる回答も「それなりに」なると言うことをお忘れなく。
引用返信 編集キー/
■40500 / inTopicNo.29)  Re[8]: ウェブブラウザで編集中にドラッグ&ドロップを禁
□投稿者/ RT (110回)-(2009/08/26(Wed) 22:42:50)
2009/08/26(Wed) 22:54:35 編集(投稿者)

No40397 (魔界の仮面弁士 さん) に返信

>全体としては編集可能、ただし一部だけ編集不可」

こちらの案で手を打つことにしました。「全体としては編集不可、ただし一部だけは編集可能」の案で、徐々に編集を出来る所をbodyタグの手前まで拡大していったのですが、BODYタグのcontentEditable の状態をfalseにすると、編集が出来ないサイトがある事がわかりました。

> # HtmlElementCollection を返す物としては、先の GetElementsByTagName メソッド以外にも、
> # Children プロパティや All プロパティなどがあります。

GetElementsByTagName、Children プロパティ等、試してみましたが、画像だけを動かないようにする事は出来ませんでした。

> ですから GetElementsByTagName や All や Images や NextSibling や Links などといった、
> 各種メンバを駆使して、目的となる HtmlElement にたどり着くことが現在の最重要課題です。
> HTML の内容に併せて、それぞれのメンバを使い分けてみてください。

All、 Images、NextSibling、等試して見ましたが、結局画像がドラッグで動いてしまいます。

> >> (7) contentEditable に指定できる値が、"true" / "false" / "inherit" の
> >>  3 種類である事は調査済みですか?
> 初期設定は inherit (継承) になっており、上位の要素が true または false になると、
> その値が下位の要素にも引き継がれるようになっています。

<IMG>タグをfalseに設定しても、上位の<A>タグがtrueになると、画像が動いてしまいます。
また、<A>タグをfalseにしたら、画像は動きませんが、うまく編集が出来なくなります。

> また、マウス座標にある HtmlElement を得る方法も知っておられますよね。

この方法も試して見ましたが、だめでした。

> ですからここまでの知識だけでも、上位の要素と下位の要素それぞれに対して、
> 異なる contentEditable を SetAttribute するという実験を行うだけの知識は
> 既に身につけておられるはずですよ。

実験を行った結果、web browserのcontentEditableによる編集状態で、テキストなどの編集を出来るようにし画像を動かなくするという事が出来ないサイトがある事が判明いたしました。

何か他の方法がもしあれば、アドバイスお願いいたします。

案がないようであれば、とりあえずこの件は、終わりにしたいと思います。

アドバイスをしてくれた皆さん、どうもありがとうございました。またよろしくお願い致します。


解決済み
引用返信 編集キー/
■40552 / inTopicNo.30)  Re[9]: ウェブブラウザで編集中にドラッグ&ドロップを禁
□投稿者/ RT (114回)-(2009/08/28(Fri) 11:13:20)
webBrowser_Main.Document.Body.AttachEventHandler("ondragstart", delegate
{
MessageBox.Show("動かすことは出来ません");
});

 上のようにondragstartイベントを設定したら、画像など動く要素を動かなくする事が出来ました。
解決済み
引用返信 編集キー/

<前の20件
トピック内ページ移動 / << 0 | 1 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -