重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

お気に入り用のボタンを配置したのですが、IE7で機能しないという報告が来て困っております。

IEで動作させるシステムですので、addFavorite()で行っております。

<input id="btnBookMark" type="button" value="お気に入り登録" onclick="window.external.addFavorite('アドレス','タイトル')" />

過去ログでも同じような質問があったのですが、解決はしておりませんでした。

どなたか対処された方はおりますでしょうか?

A 回答 (3件)

#1, 2 です。



#2 で文字数制限の都合上、紹介できなかった参考URLを貼り付けておきます。

AddFavorite Method (external)
http://msdn.microsoft.com/en-us/library/ms535926 …
sidebar - MDC
https://developer.mozilla.org/ja/DOM/window.side …

「お気に入りに追加」「ブックマークに追加」ボタンのまとめ | JavaScript | 阿部辰也のブログ――人生はひまつぶし。
http://www.abe-tatsuya.com/web_prog/javascript/a …
    • good
    • 0

#1 です。



以下、クロスブラウザ版。(Firefox3.6, Opera10.54, IE8 = OK / GoogleChrome5 = NG)

-----------
<script type="text/javascript"><!--
function initAddBookmark (doc) {
 var a    = doc.createElement('a'),
   defined = ('undefined' !== typeof sidebar && 'addPanel' in sidebar) || ('undefined' !== typeof opera && 'undefined' !== typeof print) || ('object' === typeof external && 'AddFavorite' in external);

 if (!defined) { return false; }

 a.id  = 'AddBookmark';
 a.rel  = 'sidebar';
 a.href = doc.location.href;
 a.title = doc.title;
 a.appendChild(doc.createTextNode('add bookmark'));

 doc.getElementById('AddBookmarkContainer').appendChild(a);
}

document./*@cc_on @if(@_jscript) attachEvent('on' + @else @*/addEventListener(/*@end @*/ 'click', function (event) {
 var a = event.target || event.srcElement, errorMsg;

 if ('undefined' === typeof a || !('tagName' in a) || a.tagName.toLowerCase() !== 'a' || a.id !== 'AddBookmark') { return false; }

 if ('undefined' !== typeof sidebar && 'addPanel' in sidebar) { // for Gecko
  sidebar.addPanel (a.title, a.href, '');
 } else if ('undefined' !== typeof opera && 'undefined' !== typeof print) { // for Opera
  return true;
 } else if ('object' === typeof external && 'AddFavorite' in external) { // for IE
  external.AddFavorite (a.href, a.title);
 } else {
  errorMsg = 'addFavorite function is undefined';
 }
 event.preventDefault ? event.preventDefault() : event.returnValue = false;
 if (errorMsg) { throw new Error (errorMsg); }
},false);
//--></script>
</head>
<body onload="initAddBookmark (this.document);">

<div id="AddBookmarkContainer"></div>
-----------

Element.tagName.toLowerCase() を使用した理由は、以下の通り。

-----------
** HTML DOM と XHTML DOM を両立するベスト・プラクティクスは何ですか?

HTML と XHTML とで同等の DOM が生成されるよう考えられてはいるのですが、HTML DOM と XHTML DOM とでは動作に若干の違いがあります。

 大文字・小文字の違いの認識 :

 ・できる限り、Element.tagName と Node.nodeName のテストは避けてください(または、テストの前に、toLowerCase() を使ってください)。

 名前空間:

 ・要素を生成するための名前空間を指定するバージョンの利用:Document.createElementNS(ns, elementName)
--------
    • good
    • 0

IE8 では問題なく動作しました。


addFavorite() ではないところで、エラーが起きている可能性はないでしょうか?

<p onclick="external.AddFavorite ('http://google.com/', 'Google')">お気に入りに追加 (IE専用メソッド)</p>

AddFavorite Method (external)
http://msdn.microsoft.com/en-us/library/ms535926 …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!