Angularjs 谷歌';新的reCaptcha使用ui路由器
当我勾选recaptcha框时,ui路由器似乎出现故障。页面上所有具有ui sref属性的链接都停止工作,但我没有收到任何错误消息。请看我设置的。你知道原因是什么吗 script.jsAngularjs 谷歌';新的reCaptcha使用ui路由器,angularjs,angular-ui-router,recaptcha,Angularjs,Angular Ui Router,Recaptcha,当我勾选recaptcha框时,ui路由器似乎出现故障。页面上所有具有ui sref属性的链接都停止工作,但我没有收到任何错误消息。请看我设置的。你知道原因是什么吗 script.js var app = angular.module('app', ['ui.router']) .config(function($stateProvider, $urlRouterProvider) { $stateProvider .state('home', { url: '/',
var app = angular.module('app', ['ui.router'])
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('home', {
url: '/',
templateUrl: 'home.html',
controller: function() {
grecaptcha.render('captcha', {
sitekey: "--sitekey--"
})
}
})
.state('other', {
templateUrl: 'other.html'
});
$urlRouterProvider.otherwise('/');
})
index.html
<!DOCTYPE html>
<html ng-app="app">
<head>
<script data-require="angular.js@*" data-semver="1.4.0-rc.0" src="https://code.angularjs.org/1.4.0-rc.0/angular.js"></script>
<script data-require="ui-router@*" data-semver="0.2.13" src="//rawgit.com/angular-ui/ui-router/0.2.13/release/angular-ui-router.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head>
<body>
<ui-view></ui-view>
</body>
home.html
<h1>Home</h1>
<p>Click the re-captcha, then try to change state by clicking the link below.</p>
<p><a ui-sref="other">Go to other state</a></p>
<div id="captcha"></div>
主页
单击重新验证码,然后单击下面的链接尝试更改状态
这证明了这种行为。我在使用角度布线时也遇到了同样的错误
您可以通过放置以下代码来解决此问题:
在index.html中
在您的script.js中:
我在使用角度布线时也遇到了同样的错误
您可以通过放置以下代码来解决此问题:
在index.html中
在您的script.js中:
我找到了一个简单的方法来解决任何类型的路由器的问题。当grecaptha未定义时,这意味着我们在您的情况下遇到了同步问题。因此,在我/你的控制器中,你应该使用例如>
所以:
在HTML中
在控制器中:
$.getScript(“https://www.google.com/recaptcha/api.js");代码>
在这里,您可以让grecaptcha像第一次加载页面一样完成这项工作。我找到了一种简单的方法来解决angular上任何类型路由器的问题。当grecaptha未定义时,这意味着我们在您的情况下遇到了同步问题。因此,在我/你的控制器中,你应该使用例如>
所以:
在HTML中
在控制器中:
$.getScript(“https://www.google.com/recaptcha/api.js");代码>
在这里,您可以让grecaptcha执行此操作,就像您第一次加载页面一样。在使用ngRoute时有效:您尝试过吗?我尝试过所有可以找到的角度模块,包括来自VictorCortex的模块,但我得到了相同的行为。在使用ngRoute时有效:您尝试过吗?我尝试过所有可以找到的角度模块,包括来自大脑皮层的那个,但我也有同样的行为。
element.bind("click", function(e) {
var button = e.which || e.button;
if ( !(button > 1 || e.ctrlKey || e.metaKey || e.shiftKey || element.attr('target')) ) {
// HACK: This is to allow ng-clicks to be processed before the transition is initiated:
var transition = $timeout(function() {
$state.go(ref.state, params, options);
});
e.preventDefault();
// if the state has no URL, ignore one preventDefault from the <a> directive.
var ignorePreventDefaultCount = isAnchor && !newHref ? 1: 0;
e.preventDefault = function() {
if (ignorePreventDefaultCount-- <= 0)
$timeout.cancel(transition);
};
}
});
//e.preventDefault = function() {
// if (ignorePreventDefaultCount-- <= 0)
// $timeout.cancel(transition);
//};
var app = angular.module('app', ['ui.router']);
app.config(function($stateProvider, $urlRouterProvider) {
$stateProvider.state('home',
{
url: '/',
templateUrl: 'home.html',
controller: function() {
function onloadCallback() {
grecaptcha.render('yourHTMLElementId', {
'sitekey' : 'yourSiteKey'
});
}
onloadCallback();
}
})
.state('other', {
templateUrl: 'other.html'
});
$urlRouterProvider.otherwise('/');
})