onclick 重定向和延迟加载
onclick redirection and lazy load
我想在 signin.xhtml 上单击命令按钮时 运行 一个 javascript 函数,但是当我单击它时,重定向到 dev.xhtml。我不想要这种重定向,我想留在 signin.xhtml。实际上这并不是真正的重定向,因为它是相同的 index.xhtml 页面,但具有延迟加载。
这里是来自 signin.xhtml 的命令按钮:
<h:form id="formSignInPartner" enctype="multipart/form-data">
<p:commandButton value="Géolocaliser mon commerce" onclick="getLocation()"/>
</h:form>
和index.xhtml:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:pm="http://primefaces.org/mobile"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:p="http://primefaces.org/ui">
<f:view renderKitId="PRIMEFACES_MOBILE" />
<h:head>
<script type="text/javascript" src="../javascript/geolocalisationPartner.js"></script>
</h:head>
<h:body>
<pm:page id="dev" lazy ="false">
<ui:include src="trash/dev.xhtml"/>
</pm:page>
<pm:page id="partnerSignIn" lazy="true">
<ui:include src="/Partner/signIn.xhtml"/>
</pm:page>
</h:body>
</html>
这是脚本 geolocalisationPartner.js 但我不认为这是问题所在
var options = {
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0
};
function error(msg) {
alert('Geolocalisation échouée :\n' + msg);
}
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition, error, options);
} else {
alert('Votre navigateur\nne supporte pas\nla geolocalisation');
}
}
function showPosition(position) {
var long = position.coords.longitude;
var lat = position.coords.latitude;
$(PrimeFaces.escapeClientId('partnerSignIn:formSignInPartner:idlongitude')).val(long);
$(PrimeFaces.escapeClientId('partnerSignIn:formSignInPartner:idlatitude')).val(lat);
alert('Geolocalisation réussie !');
}
您可以使用event.preventDefault
脚本
function getLocation(e) {
e.preventDefault()
// your code here
}
xhtml
<p:commandButton value="Géolocaliser mon commerce" onclick="getLocation(e)"/>
如果您不想 link,则需要 cancel 事件。
function getLocation(evt) {
evt.preventDefault();
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition, error, options);
} else {
alert('Votre navigateur\nne supporte pas\nla geolocalisation');
}
}
更新您的 html:
<p:commandButton value="Géolocaliser mon commerce" onclick="getLocation(evt)"/>
我发现了问题。在javascript控制台,我看到我的脚本文件没有找到,路径错误。
我想在 signin.xhtml 上单击命令按钮时 运行 一个 javascript 函数,但是当我单击它时,重定向到 dev.xhtml。我不想要这种重定向,我想留在 signin.xhtml。实际上这并不是真正的重定向,因为它是相同的 index.xhtml 页面,但具有延迟加载。
这里是来自 signin.xhtml 的命令按钮:
<h:form id="formSignInPartner" enctype="multipart/form-data">
<p:commandButton value="Géolocaliser mon commerce" onclick="getLocation()"/>
</h:form>
和index.xhtml:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:pm="http://primefaces.org/mobile"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:p="http://primefaces.org/ui">
<f:view renderKitId="PRIMEFACES_MOBILE" />
<h:head>
<script type="text/javascript" src="../javascript/geolocalisationPartner.js"></script>
</h:head>
<h:body>
<pm:page id="dev" lazy ="false">
<ui:include src="trash/dev.xhtml"/>
</pm:page>
<pm:page id="partnerSignIn" lazy="true">
<ui:include src="/Partner/signIn.xhtml"/>
</pm:page>
</h:body>
</html>
这是脚本 geolocalisationPartner.js 但我不认为这是问题所在
var options = {
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0
};
function error(msg) {
alert('Geolocalisation échouée :\n' + msg);
}
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition, error, options);
} else {
alert('Votre navigateur\nne supporte pas\nla geolocalisation');
}
}
function showPosition(position) {
var long = position.coords.longitude;
var lat = position.coords.latitude;
$(PrimeFaces.escapeClientId('partnerSignIn:formSignInPartner:idlongitude')).val(long);
$(PrimeFaces.escapeClientId('partnerSignIn:formSignInPartner:idlatitude')).val(lat);
alert('Geolocalisation réussie !');
}
您可以使用event.preventDefault
脚本
function getLocation(e) {
e.preventDefault()
// your code here
}
xhtml
<p:commandButton value="Géolocaliser mon commerce" onclick="getLocation(e)"/>
如果您不想 link,则需要 cancel 事件。
function getLocation(evt) {
evt.preventDefault();
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition, error, options);
} else {
alert('Votre navigateur\nne supporte pas\nla geolocalisation');
}
}
更新您的 html:
<p:commandButton value="Géolocaliser mon commerce" onclick="getLocation(evt)"/>
我发现了问题。在javascript控制台,我看到我的脚本文件没有找到,路径错误。