Skip to content

Commit ff9434d

Browse files
authored
Merge pull request #11 from ahmadfh/master
prevent form from jumping to the top of page when the user submit
2 parents 9a238c2 + 96222c3 commit ff9434d

File tree

2 files changed

+65
-20
lines changed

2 files changed

+65
-20
lines changed

widget/app.js

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,48 @@
1-
'use strict';
1+
function injectJotForm() {
2+
var ifr = document.getElementById("JotFormIFrame");
3+
if (window.location.href && window.location.href.indexOf("?") > -1) {
4+
var get = window.location.href.substr(window.location.href.indexOf("?") + 1);
5+
if (ifr && get.length > 0) {
6+
var src = ifr.src;
7+
src = src.indexOf("?") > -1 ? src + "&" + get : src + "?" + get;
8+
ifr.src = src;
9+
}
10+
}
11+
window.handleIFrameMessage = function (e) {
12+
var args = e.data.split(":");
13+
14+
iframe = document.getElementById("JotFormIFrame");
15+
16+
if (!iframe) return;
17+
switch (args[0]) {
18+
case "scrollIntoView":
19+
iframe.scrollIntoView();
20+
break;
21+
case "setHeight":
22+
iframe.style.height = args[1] + "px";
23+
break;
24+
case "collapseErrorPage":
25+
if (iframe.clientHeight > window.innerHeight) {
26+
iframe.style.height = window.innerHeight + "px";
27+
}
28+
break;
29+
case "reloadPage":
30+
window.location.reload();
31+
break;
32+
}
33+
var isJotForm = (e.origin.indexOf("jotform") > -1) ? true : false;
34+
if (isJotForm && "contentWindow" in iframe && "postMessage" in iframe.contentWindow) {
35+
var urls = {"docurl": encodeURIComponent(document.URL), "referrer": encodeURIComponent(document.referrer)};
36+
iframe.contentWindow.postMessage(JSON.stringify({"type": "urls", "value": urls}), "*");
37+
}
38+
};
39+
if (window.addEventListener) {
40+
window.addEventListener("message", handleIFrameMessage, false);
41+
} else if (window.attachEvent) {
42+
window.attachEvent("onmessage", handleIFrameMessage);
43+
}
44+
}
45+
246

347
(function (angular) {
448
angular.module('jotFormPluginWidget', ['ui.bootstrap'])
@@ -22,6 +66,7 @@
2266
var dummyData = {url: "https://form.jotform.me/60070086181448"};
2367
WidgetHome.data.content.url = dummyData.url;
2468
}
69+
injectJotForm();
2570
};
2671
WidgetHome.error = function (err) {
2772
if (err && err.code !== STATUS_CODE.NOT_FOUND) {

widget/index.html

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
<!DOCTYPE html>
2-
<html ng-app="jotFormPluginWidget">
2+
<html ng-app="jotFormPluginWidget" style="height: 100%; min-height:100%;">
33
<head lang="en">
4-
<meta charset="UTF-8">
5-
<title>content</title>
6-
<!-- CSS -->
7-
<link href="../../../styles/helper.css" rel="stylesheet">
8-
<link href="../../../styles/siteIcons.css" rel="stylesheet">
9-
10-
<!-- JS -->
11-
<script src="../../../scripts/buildfire.js"></script>
12-
<script src="../../../scripts/angular/angular.min.js"></script>
13-
<script src="../../../scripts/angular/ui-bootstrap.min.js"></script>
14-
<script src="app.js"></script>
15-
<script src="enums.js"></script>
16-
<script src="app.services.js"></script>
4+
<meta charset="UTF-8">
5+
<title>content</title>
6+
<!-- CSS -->
7+
<meta name="buildfire" content="disableTheme,disableFastClick">
8+
<!-- JS -->
9+
<script src="../../../scripts/buildfire.js"></script>
10+
<script src="../../../scripts/angular/angular.min.js"></script>
11+
<script src="../../../scripts/angular/ui-bootstrap.min.js"></script>
12+
<script src="app.js"></script>
13+
<script src="enums.js"></script>
14+
<script src="app.services.js"></script>
1715
</head>
18-
<body>
16+
<body style="height: 100%; min-height:100%;margin: 0px">
1917
<div class="content"
20-
style="-webkit-overflow-scrolling: touch !important;overflow: auto; height: 100%;"
18+
style="-webkit-overflow-scrolling: touch !important;overflow: auto; height: 100%;min-height: 100%;min-width: 100%;"
2119
ng-controller="WidgetHomeCtrl as WidgetHome">
22-
<iframe src="{{WidgetHome.data.content.url | returnUrl}}"
23-
ng-if="WidgetHome.data.content.url"
24-
style="height: 100%;position: relative"></iframe>
20+
<iframe id="JotFormIFrame" allowtransparency="true"
21+
ng-src="{{WidgetHome.data.content.url | returnUrl}}"
22+
ng-if="WidgetHome.data.content.url" frameborder="0"
23+
style="width: 1px; min-width: 100%;height: 100%; min-height: 100% ;border:none;" scrolling="no"></iframe>
24+
2525
</div>
2626
</body>
2727
</html>

0 commit comments

Comments
 (0)