私はこの答えを見つけるためにあらゆることを試しましたが、今は午前 1 時です。ベッドに行ってあきらめなければなりません :( 妻が 2 度目の離婚で私に仕える前に! :)
簡単に言えば、私の問題はこれです.Google APIを使用して(localsearch、imagesearch、websearch)、サイトに組み込むさまざまな文字列を見つけます。それらは動的 DIV にロードされ、結果の各セットには、その番号に関連する整数を含む div が与えられます。例えば、
for (var i = 0; i < localSearch.results.length; i++) {
// Create HTML elements for search results
var letsseetitle = localSearch.results[i].titleNoFormatting;
letsseestreet = localSearch.results[i].streetAddress;
var letsseecity = localSearch.results[i].city;
var letsseeregion = localSearch.results[i].region;
var letsseecountr = localSearch.results[i].country;
var letsseestaticmapurl = localSearch.results[i].staticMapUrl;
var latresult = localSearch.results[i].lat;
var lng = localSearch.results[i].lng;
dv = document.createElement('div'); // create dynamically div tag
var attrname = "selectionbox" + i;
dv.setAttribute('id',attrname); //give id to it
var goFetchThis = letsseetitle + " " + letsseestreet + " " + letsseeregion + " " + letsseecountr;
dv.style.border="solid";
dv.style.padding="10px";
dv.style.backgroundColor="#80C4FF";
dv.title="Click to review this company.";
dv.innerHTML= letsseetitle + "<BR>" + letsseestreet + "<BR>" + letsseecity + "<BR>" + letsseeregion + "<BR>" + letsseecountr + "<BR>";
//var el = document.getElementById(attrname);
LoopIn = i;
// attach event onmouseclick to the created div tag
if(isIE){
dv.onclick = new Function("SelectThis(attrname, attrname)");
}
else{
dv.setAttribute("onclick", "SelectThis()");
}
document.getElementById("foundresultsdiv").appendChild( dv );
}
今問題はこれです。クロム、つまりサファリなどの両方で、オンクリックコンポーネントに問題はありません。IE では、ユーザーが動的に作成された div の 1 つをクリックすると、スクリプトがコンテンツを削除し、ユーザーが送信できるようにフォームにロードします。
これを行うスクリプトは次のとおりです。
function SelectThis(e) {
var targ;
if (!e) var e = window.event;
if (!e) var e = elTags[e].getAttribute("name");
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;
if (!e) var e = window.event;
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;
if (targ.nodeType == 3) // defeat Safari bug
targ = targ.parentNode;
theId=targ.id
var TheStuffInside = document.getElementById(theId).innerHTML;
var linebyline = TheStuffInside.split("<br>");
var searchname = document.getElementById('searchname')
searchname.value = linebyline[0];
var stAddress = document.getElementById('stadd')
stAddress.value = linebyline[1];
var suburb = document.getElementById('suburb')
suburb.value = linebyline[2];
var stateLocal = document.getElementById('statelocal')
stateLocal.value = linebyline[3];
var country = document.getElementById('country')
country.value = linebyline[4];
}
このスクリプトはまったく書いていないので自慢できませんが、基本的にはうまく機能します。Firefox を除く。Firefox で動的 div の 1 つをクリックすると、何も起こりません。実際、要素は未定義の結果を返します。コードの変更からロード時のイベントリスナーの追加まで、さまざまなバリエーションを試しましたが、まったく運がありませんでした。
ここでのアドバイスは大歓迎です。誰が知っていますか-あなたは私の結婚を救うかもしれません!:)
ちなみに、//beat safariのバグは技術的には間違っていますが、私はそれを書いていませんでした. :)
ご不明な点がございましたら、お知らせください。