2016-10-27 4 views
0

私は現在、訪問した各Webページ内に異なる名前の出現箇所があるChromeプラグインを開発しようとしています。ブートストラップポップオーバーは機能ではありません

プラグインが名前を見つけたら、基本的にその隣にアイコンが追加されます。クリックすると、その人に関する詳細情報を含むブートストラップポップオーバーが表示されます。

私は自分のコードを実行しようとすると、私はこのエラーを取得する:ここで

VM887:1 Uncaught TypeError: $(...).popover is not a function(…)

は私のコードです:

$('head').append('<script async src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.1/jquery.min.js"></script>\ 
<script async src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>'); 

$(document).ready(function(){ 
    var name = "Nicolas"; 
    // console.log('Document is ready.. scanning for politicians...'); 
    //var hashmap = db_reader.getHashMap(); 

    var counter = {i: 0}; //Occurences. Singleton to be passed by reference and not by value. 
    $('p').each(function(index) { 
    addImage(this, counter); 
    }); 

    $('li').each(function(index) { 
    addImage(this, counter) 
    }); 

    $('head').append(
    "<script>$(function(){$('[data-toggle=\"popover\"]').popover();});\ 
</script>" 
); 

}); 

function addImage(context, counter) { 
    var body = $(context).text(); 
    var word; 
    var reg = /[A-Z]+[a-z]*/gm; 
    while(word = reg.exec(body)){ 
    // console.log("while"); 
    if(word == name){ 
     // console.log(word); 
     var image = '<a href="#" data-toggle="popover" title="Popover Header" data-content="A wonderful content" id="popover'+counter.i+'" class="politicianFind">\ 
<img alt="name" src="https://s15.postimg.org/pei4ci3fv/fdp.png">\ 
</a>'; 
     // console.log("Replacing HTML"); 
     $(context).html(body.replace(word, word + " " + image)); 
     counter.i++; 
    } 
    } 
} 

私はすでに多くのことを検索しましたが、私は見つけることができませんでしたこの問題の修正。

敬具、

フロリアン

+0

あなたのプロジェクトにbootstrap.jsを含めましたか? – gwar9

+0

ありがとう!確かに、それは私の問題を解決しました。ブーストラップ、jQueryの依存関係をマニフェストファイルに追加するのを忘れてしまった: –

+0

コンソールで何かが "未定義"または "機能ではない"ときにはトラブルシューティングの問題はない。 – gwar9

答えて

0

は、私はあなたがメソッドを呼び出したときからだと思いpopoverブートストラップスクリプトはまだロードされていません。

あなたは2つのオプションがあります:$(window).load上のメソッドを呼び出すには

  1. を - http://output.jsbin.com/qoteqe
  2. は、DOM内のブートストラップおよびjQueryの参照を含めると、スクリプトでそれらをロードしない:http://output.jsbin.com/tamoda

ところでなぜ別のjQueryリファレンスを追加しますか? $('head').appendを使用している場合、あなたのページにはすでにjQueryがあります。そうじゃない?

+0

こんにちは、ありがとうございます。依存関係をマニフェストに追加するのを忘れました...私はマニフェストファイルにjQueryとBootstrapの依存関係を追加することで問題を解決しました。 ありがとうございます。 –

+0

私の喜び:幸運.. –

関連する問題