Comment détecter/suivre/vérifier la publication en javascript (par exemple, dans asp.net Page.isPostBack())? Une suggestion?Comment détecter/suivre la publication en JavaScript?
Répondre
ASPX:
<input type="hidden" id="_ispostback" value="<%=Page.IsPostBack.ToString()%>" />
script côté client:
function isPostBack() { //function to check if page is a postback-ed one
return document.getElementById('_ispostback').value == 'True';
}
PS: Je l'ai pas testé, mais je l'ai fait somthing similaire avant et il fonctionne.
De toute façon, j'ajoute runat = "server" à l'entrée cachée et change sa valeur dans le fichier codebehind mais cela fonctionne très bien. Et je recommanderais à jQuery de faire le javascript parce que cela deviendrait: function isPostBack() {return $ ("#_ ispostback"). Val() == 'true';} –
@Shhnap: Oui, je suis d'accord. Juste un moyen paresseux pour moi: P –
Pourquoi s'embêter à insérer un élément ''? Vous pourriez juste avoir isPostBack() retourner directement la valeur de Page.IsPostBack: 'return <% = Page.IsPostBack%>;' – RickNZ
Vous pouvez uniquement suivre la publication si vous utilisez des requêtes AJAX ou disposez d'un champ masqué que le javascript lit au chargement de la page. Sinon, la page est régénérée et toutes les données POST sont perdues; comme vous pouvez l'espérer et l'espérer.
Voir ci-dessous:
<script type="text/javascript">
function invokeMeMaster() {
var chkPostBack = '<%= Page.IsPostBack ? "true" : "false" %>';
if (chkPostBack == 'false') {
alert('Only the first time');
}
}
window.onload = function() { invokeMeMaster(); };
</script>
Si vous voulez vérifier si la page en cours sera un postback si l'utilisateur clique sur un bouton d'envoi, vous pouvez vérifier la présence de ViewState:
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="xxxxx" />
Vous pouvez utiliser quelque chose comme document.getElementById("__VIEWSTATE")
ou l'équivalent jQuery. Toutefois, si vous souhaitez voir si la page en cours a été générée en réponse à une publication, vous devez d'abord insérer ces données dans la page côté serveur.
Par exemple:
function isPostBack() {
return <%= Page.IsPostBack %>;
}
Et voilà. +1 :) –
Cela tombe si vous n'avez pas accès au code côté serveur et que les blocs de code ne sont pas autorisés. –
Bizarrement, cela ne fonctionne pas pour moi, mais cela ne: \t \t \t fonction IsPostBack() { \t \t \t \t var ret = '<% = Page.IsPostBack%>' == 'vrai'; \t \t \t \t return ret; \t \t \t} – Zeek
Dans certains cas, vous pouvez vérifier postback sans code côté serveur. Par exemple, dans SharePoint, vous ne pouvez pas avoir de blocs de code dans les pages SharePoint Designer, vous ne pouvez donc utiliser aucune solution nécessitant <% = quelque chose%>. Voici une alternative qui ne comporte pas de code côté serveur:
<script type="text/javascript">
function isPostBack()
{
return document.referrer.indexOf(document.location.href) > -1;
}
if (isPostBack()){
document.write('<span style="color:red;">Your search returned no results.</span><br/>');
}
</script>
Une mise en garde (ou fonction, selon la façon dont vous regardez), ce détectera pas seulement postbacks, mais tous les cas où la page des liens vers lui-même .
Comme JavaScript ne doit pas être écrit avec le code côté serveur, et l'injection de nouveaux éléments dans la page semble exagéré, il me semble que la solution la plus simple est d'ajouter [datat-*]
attributs à l'élément <head>
:
Page.Header.Attributes["data-is-postback"] IsPostBack ? "true" : "false";
Cela peut alors être accessible en tant que:
jQuery:$('head').data('isPostback');
vanille JS:
document.head.getAttribute('data-is-postback') === 'true';
Bien sûr, si vous traitez l'attribut [data-is-postback]
comme un attribut booléen, vous pouvez également utiliser:
if (IsPostBack)
{
Page.Header.Attributes.Add("data-is-postback", "");
}
else
{
Page.Header.Attributes.Remove("data-is-postback");
}
jQuery:
$('head').is('[data-is-postback]');
vanille JS:
document.head.hasAttribute('data-is-postback')
Bien que ce soit génial si vous accédez au code côté serveur, il tombe si vous ne le faites pas. Certains logiciels n'autorisent même pas les blocs de code, donc une solution JavaScript pure serait nécessaire. –
est la solution ici en utilisant jQuery:
$("a[href^='javascript:__doPostBack']").click(function() {
alert('ok');
});
J'ai une solution qui a fonctionné pour moi.
// Postback catch
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(function (s, e) {
alert("post back");
});
cela fonctionne uniquement pour les requêtes ajax async – devi
sur Page_Load sur votre côté serveur: qui suit utilise une surcharge de RegisterClientScriptBlock() qui entourera notre chaîne avec les balises de script nécessaires
côté serveur
if (Page.IsPostBack){
ClientScript.RegisterClientScriptBlock(GetType(),
"IsPostBack", "var isPostBack = true;", true);
}
Ensuite, Dans votre script qui s'exécute pour onLoad, vérifiez l'existence de cette variable.
if (isPostBack){
//do something here
}
utilisation bodyonloadfunc pour vérifier postback côté client
function bodyonloadfunc() {
alert("Postback");
}
Envisagez d'apporter une réponse plus étendue. – Sam
@Sam bodonloadfunc est une fonction javascript qu'elle appelle quand la page est postback. –
- 1. Comment éviter une publication en JavaScript?
- 2. Arrêter une publication en javascript
- 3. multithreading et abonnement/publication approche en javascript
- 4. Evénement de publication Javascript
- 5. Publication PHP JavaScript
- 6. Publication de données en JavaScript à partir d'une URL
- 7. Comment puis-je mesurer le temps entre le clic et la publication en javascript?
- 8. UpdatePanel provoque la publication en pleine page
- 9. Le meilleur moyen d'attraper une publication en JavaScript?
- 10. Définition du focus sur la publication lancée par javascript
- 11. Mystérieux problèmes de publication avec javascript (asp.net)
- 12. ASP.NET AJAX - Vérifier la publication asynchrone via JavaScript
- 13. Recharger le javascript externe après la publication asynchrone via UpdatePanel
- 14. ASP.NET CheckBox désactivation de la publication avec javascript
- 15. Comment désactiver la publication et la distribution?
- 16. Comment faire pour pousser la valeur javascript au serveur à la publication?
- 17. Comment gérer la demande de publication en python
- 18. Publication de vidéos protégées en ligne .. comment?
- 19. Flashdevelop problème avec la publication
- 20. Annuler la publication de contrôle
- 21. Déterminez la taille des données de publication en octets
- 22. Comment redirige-t-on après la publication?
- 23. Comment personnaliser la publication dans ASP.NET?
- 24. Quand une publication n'est-elle pas une publication? (selon ASP.net)
- 25. Publication de variables en PHP
- 26. Comment forcer la publication d'un fichier UITableViewCell
- 27. Comment annuler la publication d'une application .Net
- 28. xml publication
- 29. Maintenir la publication avec WebForm_DoCallback
- 30. viewmodel après la publication
Que voulez-vous dire par "voie"? –