]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
prevent navigating to area href when modal target. fixes #18796 20462/head
authorMax Beatty <max@beatty.me>
Thu, 4 Aug 2016 20:47:30 +0000 (13:47 -0700)
committerMax Beatty <max@beatty.me>
Thu, 4 Aug 2016 20:47:30 +0000 (13:47 -0700)
js/src/modal.js
js/tests/unit/modal.js

index 9b3a99ddd734e057e13dfecb4bb0234c799e54a5..fd13a687cb40da6ee7d68216eabb3770e274c463 100644 (file)
@@ -491,7 +491,7 @@ const Modal = (($) => {
     let config = $(target).data(DATA_KEY) ?
       'toggle' : $.extend({}, $(target).data(), $(this).data())
 
-    if (this.tagName === 'A') {
+    if (this.tagName === 'A' || this.tagName === 'AREA') {
       event.preventDefault()
     }
 
index 28c1e0ec7428c3af3e805e25535819a1c6133a36..7329776bae0cb960c1ec355dfeccda781ae52f6a 100644 (file)
@@ -403,4 +403,26 @@ $(function () {
       })
       .bootstrapModal('show')
   })
+
+  QUnit.test('should not follow link in area tag', function (assert) {
+    assert.expect(2)
+    var done = assert.async()
+
+    $('<map><area id="test" shape="default" data-toggle="modal" data-target="#modal-test" href="demo.html"/></map>')
+      .appendTo('#qunit-fixture')
+
+    $('<div id="modal-test"><div class="contents"><div id="close" data-dismiss="modal"/></div></div>')
+      .appendTo('#qunit-fixture')
+
+    $('#test')
+      .on('click.bs.modal.data-api', function (event) {
+        assert.notOk(event.isDefaultPrevented(), 'navigating to href will happen')
+
+        setTimeout(function () {
+          assert.ok(event.isDefaultPrevented(), 'model shown instead of navigating to href')
+          done()
+        }, 1)
+      })
+      .trigger('click')
+  })
 })