bootstrap 模式中的 Twitter 分享按钮在 Firefox 上不起作用
Twitter share button inside bootstrap modal not working on firefox
我有两个 Twitter 分享按钮,一个在主体上,另一个在 bootstrap 模式中。
两个“共享”按钮都可以在 chrome 上使用,但不能在 Firefox 上使用。在 Firefox 上,位于模态之外的第一个共享按钮正在工作,但是当我打开模态时,我看不到共享按钮。
这是一个错误吗?这个问题有解决办法吗?
这是我的代码
https://jsfiddle.net/swarnendu/fb7t0fpe/3/embedded/result/
<html>
<head>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</head>
<body>
<script>
window.twttr = (function (d,s,id) {
var t, js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return; js=d.createElement(s); js.id=id;
js.src="https://platform.twitter.com/widgets.js"; fjs.parentNode.insertBefore(js, fjs);
return window.twttr || (t = { _e: [], ready: function(f){ t._e.push(f) } });
}(document, "script", "twitter-wjs"));
</script>
<div class="row">
<a class="twitter-share-button" href="https://twitter.com/intent/tweet" target="_self">Tweet</a>
</div>
<div class="container">
<h2>Modal Example</h2>
<!-- Trigger the modal with a button -->
<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal">Open Modal</button>
<!-- Modal -->
<div class="modal fade" id="myModal" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Modal Header</h4>
</div>
<div class="modal-body">
<a class="twitter-share-button"
href="https://twitter.com/intent/tweet" target="_self">
Tweet</a>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
这看起来像是一个错误,因为小部件按钮在 Firefox 中是隐藏的,而这个 css 是由 Twitter 提供的。但是,我找到了解决方法 - 基本上您可以自己创建缺少的按钮。
1) 像这样更改 modal-body
div 的内容:
<div class="modal-body">
<a href="https://twitter.com/intent/tweet">
<i class="btn-icon"></i>
<span class="btn-text">Tweet</span>
</a>
</div>
2) 将以下样式添加到您的页面:
.modal-body a .btn-icon{
position: relative;
width:60px;
height: 20px;
padding: 1px 10px 1px 7px;
font-weight: 500;
color: #fff;
cursor: pointer;
background-color: #1b95e0;
border-radius: 3px;
box-sizing: border-box;
background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2072%2072%22%3E%3Cpath%20fill%3D%22none%22%20d%3D%22M0%200h72v72H0z%22%2F%3E%3Cpath%20class%3D%22icon%22%20fill%3D%22%23fff%22%20d%3D%22M68.812%2015.14c-2.348%201.04-4.87%201.744-7.52%202.06%202.704-1.62%204.78-4.186%205.757-7.243-2.53%201.5-5.33%202.592-8.314%203.176C56.35%2010.59%2052.948%209%2049.182%209c-7.23%200-13.092%205.86-13.092%2013.093%200%201.026.118%202.02.338%202.98C25.543%2024.527%2015.9%2019.318%209.44%2011.396c-1.125%201.936-1.77%204.184-1.77%206.58%200%204.543%202.312%208.552%205.824%2010.9-2.146-.07-4.165-.658-5.93-1.64-.002.056-.002.11-.002.163%200%206.345%204.513%2011.638%2010.504%2012.84-1.1.298-2.256.457-3.45.457-.845%200-1.666-.078-2.464-.23%201.667%205.2%206.5%208.985%2012.23%209.09-4.482%203.51-10.13%205.605-16.26%205.605-1.055%200-2.096-.06-3.122-.184%205.794%203.717%2012.676%205.882%2020.067%205.882%2024.083%200%2037.25-19.95%2037.25-37.25%200-.565-.013-1.133-.038-1.693%202.558-1.847%204.778-4.15%206.532-6.774z%22%2F%3E%3C%2Fsvg%3E");
}
.modal-body a .btn-icon:hover{
background-color:#0c7abf;
}
.btn-text{
display: inline-block;
vertical-align: top;
margin-left: 3px;
}
.modal-body a{
position: relative;
height: 20px;
padding: 5px 14px 5px 6px;
font-weight: 500;
color: #fff;
cursor: pointer;
background-color: #1b95e0;
border-radius: 3px;
box-sizing: border-box;
}
.modal-body a:hover{
background-color:#0c7abf;
}
3) 添加 jQuery 事件处理程序
$(document).ready(function(){
$('.modal-body a .btn-icon, .modal-body a').hover(function(){
$('.modal-body a .btn-icon, .modal-body a')
.css('background-color', '#0c7abf');
},
function(){
$('.modal-body a .btn-icon, .modal-body a')
.css('background-color', '#1b95e0');
})
})
就是这样。所以现在你在 FF 中有按钮,在弹出窗口 window 中有 Chrome。如有必要,您可以调整按钮和图标的样式以使其看起来更好。
工作示例:
http://plnkr.co/edit/LPyveKju0zQAELpOzkQW?p=preview
希望对您有所帮助。
或者继续使用 jQuery:
克隆按钮
$(function() {
$('#myModal').on('shown.bs.modal', function(e) {
if ($(".modal-body").find('.twitter-share-button').size())
return;
$('.twitter-share-button:first').clone().appendTo('.modal-body');
});
});
我有两个 Twitter 分享按钮,一个在主体上,另一个在 bootstrap 模式中。
两个“共享”按钮都可以在 chrome 上使用,但不能在 Firefox 上使用。在 Firefox 上,位于模态之外的第一个共享按钮正在工作,但是当我打开模态时,我看不到共享按钮。
这是一个错误吗?这个问题有解决办法吗?
这是我的代码
https://jsfiddle.net/swarnendu/fb7t0fpe/3/embedded/result/
<html>
<head>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</head>
<body>
<script>
window.twttr = (function (d,s,id) {
var t, js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return; js=d.createElement(s); js.id=id;
js.src="https://platform.twitter.com/widgets.js"; fjs.parentNode.insertBefore(js, fjs);
return window.twttr || (t = { _e: [], ready: function(f){ t._e.push(f) } });
}(document, "script", "twitter-wjs"));
</script>
<div class="row">
<a class="twitter-share-button" href="https://twitter.com/intent/tweet" target="_self">Tweet</a>
</div>
<div class="container">
<h2>Modal Example</h2>
<!-- Trigger the modal with a button -->
<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#myModal">Open Modal</button>
<!-- Modal -->
<div class="modal fade" id="myModal" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Modal Header</h4>
</div>
<div class="modal-body">
<a class="twitter-share-button"
href="https://twitter.com/intent/tweet" target="_self">
Tweet</a>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
这看起来像是一个错误,因为小部件按钮在 Firefox 中是隐藏的,而这个 css 是由 Twitter 提供的。但是,我找到了解决方法 - 基本上您可以自己创建缺少的按钮。
1) 像这样更改 modal-body
div 的内容:
<div class="modal-body">
<a href="https://twitter.com/intent/tweet">
<i class="btn-icon"></i>
<span class="btn-text">Tweet</span>
</a>
</div>
2) 将以下样式添加到您的页面:
.modal-body a .btn-icon{
position: relative;
width:60px;
height: 20px;
padding: 1px 10px 1px 7px;
font-weight: 500;
color: #fff;
cursor: pointer;
background-color: #1b95e0;
border-radius: 3px;
box-sizing: border-box;
background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2072%2072%22%3E%3Cpath%20fill%3D%22none%22%20d%3D%22M0%200h72v72H0z%22%2F%3E%3Cpath%20class%3D%22icon%22%20fill%3D%22%23fff%22%20d%3D%22M68.812%2015.14c-2.348%201.04-4.87%201.744-7.52%202.06%202.704-1.62%204.78-4.186%205.757-7.243-2.53%201.5-5.33%202.592-8.314%203.176C56.35%2010.59%2052.948%209%2049.182%209c-7.23%200-13.092%205.86-13.092%2013.093%200%201.026.118%202.02.338%202.98C25.543%2024.527%2015.9%2019.318%209.44%2011.396c-1.125%201.936-1.77%204.184-1.77%206.58%200%204.543%202.312%208.552%205.824%2010.9-2.146-.07-4.165-.658-5.93-1.64-.002.056-.002.11-.002.163%200%206.345%204.513%2011.638%2010.504%2012.84-1.1.298-2.256.457-3.45.457-.845%200-1.666-.078-2.464-.23%201.667%205.2%206.5%208.985%2012.23%209.09-4.482%203.51-10.13%205.605-16.26%205.605-1.055%200-2.096-.06-3.122-.184%205.794%203.717%2012.676%205.882%2020.067%205.882%2024.083%200%2037.25-19.95%2037.25-37.25%200-.565-.013-1.133-.038-1.693%202.558-1.847%204.778-4.15%206.532-6.774z%22%2F%3E%3C%2Fsvg%3E");
}
.modal-body a .btn-icon:hover{
background-color:#0c7abf;
}
.btn-text{
display: inline-block;
vertical-align: top;
margin-left: 3px;
}
.modal-body a{
position: relative;
height: 20px;
padding: 5px 14px 5px 6px;
font-weight: 500;
color: #fff;
cursor: pointer;
background-color: #1b95e0;
border-radius: 3px;
box-sizing: border-box;
}
.modal-body a:hover{
background-color:#0c7abf;
}
3) 添加 jQuery 事件处理程序
$(document).ready(function(){
$('.modal-body a .btn-icon, .modal-body a').hover(function(){
$('.modal-body a .btn-icon, .modal-body a')
.css('background-color', '#0c7abf');
},
function(){
$('.modal-body a .btn-icon, .modal-body a')
.css('background-color', '#1b95e0');
})
})
就是这样。所以现在你在 FF 中有按钮,在弹出窗口 window 中有 Chrome。如有必要,您可以调整按钮和图标的样式以使其看起来更好。
工作示例: http://plnkr.co/edit/LPyveKju0zQAELpOzkQW?p=preview
希望对您有所帮助。
或者继续使用 jQuery:
克隆按钮$(function() {
$('#myModal').on('shown.bs.modal', function(e) {
if ($(".modal-body").find('.twitter-share-button').size())
return;
$('.twitter-share-button:first').clone().appendTo('.modal-body');
});
});