[英]Tab order broken with stripe card-element and vue.js
當使用 Vue.js 並且在 Vue 主元素中有條紋卡片元素時,tabindex 無法正常工作。 檢查以下代碼:
<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://js.stripe.com/v3/"></script>
</head>
<body>
<input type="text" placeholder="first tab element on page"><br />
<br />
<div id="stripeDiv">
<div id="card-element" style="border: 1px solid black;max-width:300px">
<!-- A Stripe Element will be inserted here. -->
</div>
<div id="card-errors" role="alert"></div>
</div>
<br />
<input type="text" placeholder="tab element after stripe form"><br />
<script>
var stripe = Stripe("somestripepublickey");
var card = stripe.elements().create('card').mount('#card-element');
var vue_test = new Vue({
el: '#stripeDiv'
});
</script>
</body>
</html>
當您通過 Tab 鍵瀏覽它時,您會在離開條紋字段后立即進入頂部輸入框。 您應該最終出現在底部的輸入框中。 當我刪除 Vue 的東西時,它就起作用了。
我知道我可以在 onfocus 上使用一些 js,但我寧願不這樣做。
PS:不需要條帶帳戶來測試這個。
您只需要更改 Javascript 的順序。 安裝 card 元素對 dom 做了很多瘋狂的事情。
var stripe = Stripe("somestripepublickey");
var vue_test = new Vue({
el: '#stripeDiv'
});
var card = stripe.elements().create('card').mount('#card-element');
不過,這應該可以解決您的問題。
我沒有使用 Vue,但我找到的解決方案也可能適用於您的情況。 就我而言,在加載 DOM 之前調用了掛載#card-element
的代碼。 我通過將它包裝在代碼中來修復它,在初始化所有 Stripe 內容之前等待 DOM 完全加載。 下面是一個例子:
window.addEventListener('load',function() {
var stripe = Stripe("somestripepublickey");
var card = stripe.elements().create('card').mount('#card-element');
var vue_test = new Vue({
el: '#stripeDiv'
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.