iframe父页面自适应子页面的高度

系统管理员 2022-04-11 12:22 496阅读 0赞

我们一般情况下是在子页面获取高度传递给父页面,但是由于存在跨域问题,解决起来不是很方便而

html5 postMessage解决跨域、跨窗口消息传递

postMessage()

这些问题都有一些解决办法,但html5引入的message的API可以更方便、有效、安全的解决这些难题。postMessage()方法允许来自不同源的脚本采用异步方式进行有限的通信,可以实现跨文本档、多窗口、跨域消息传递。

postMessage(data,origin)方法接受两个参数

1.data:要传递的数据,html5规范中提到该参数可以是JavaScript的任意基本类型或可复制的对象,然而并不是所有浏览器都做到了这点儿,部分浏览器只能处理字符串参数,所以我们在传递参数的时候需要使用JSON.stringify()方法对对象参数序列化,在低版本IE中引用json2.js可以实现类似效果。

2.origin:字符串参数,指明目标窗口的源,协议+主机+端口号[+URL],URL会被忽略,所以可以不写,这个参数是为了安全考虑,postMessage()方法只会将message传递给指定窗口,当然如果愿意也可以建参数设置为”*“,这样可以传递给任意窗口,如果要指定和当前窗口同源的话设置为”/“。

例如 父页面

  1. <div class="w1200">
  2. <@header.address hrefs=[{"name":'校级考试',"href":"exam/markTaskList"},
  3. {"name":'${examName!}',"href":"exam/showExam?examId=${examId!}"},
  4. {"name":'考试管理',"href":"examTool/home?examId=${examId!}&subjectId=${subjectId!}"},
  5. {"name":'报表参数设置',"href":"reportSta/toViewParam?examId=${examId!}&examName=${examName!}&subjectId=${subjectId!}"}]/>
  6. <iframe id="paramIframe" src="http://127.0.0.1:8089/param/viewParam?examId=${examId}&examName=${examName}" frameborder="0" width="100%"></iframe>
  7. </div>
  8. <script type="text/javascript">
  9. window.addEventListener('message',function(e){
  10. document.getElementById('paramIframe').height=e.data;
  11. },false)
  12. </script>

使用addEventListener() 方法,事件监听发送的message消息

第一个参数是事件的类型 (如 “click” 或 “mousedown”).

第二个参数是事件触发后调用的函数。

第三个参数是个布尔值用于描述事件是冒泡还是捕获。该参数是可选的。

子页面

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge" >
  6. <#assign cssPath="http://bd.huijiaoyun.com/resources/web_dev" />
  7. <title>报告参数设置</title>
  8. <link href="${cssPath}/v4/css/public.css" rel="stylesheet" type="text/css">
  9. <link href="${cssPath}/v4/css/readPaper1009.css" rel="stylesheet" type="text/css">
  10. </head>
  11. <body class="bg1">
  12. <input type="hidden" value="${examId}" id="examId" name="examId" />
  13. <div class="zxf_tabWp">
  14. <div class="zxf_tabTit bgStyle pdlr55 pdt10 t_l">
  15. <a href="javascript:;" class="on">总体设置</a>
  16. <a href="javascript:;">满分(理科)设置</a>
  17. <a href="javascript:;">满分(文科)设置</a>
  18. <a href="javascript:;">满分设置</a>
  19. </div>
  20. <div class="zxf_tabConWp bgStyle mgt20 pdb30 t_c">
  21. <!-- 总体设置 -->
  22. <div class="zxf_tabCon ztsz dis_none" style="display: block;">
  23. <div class="zxf_ztszCon pbt70">
  24. <div class="clearfix">
  25. <div class="zxf_setLeftWp fl w658">
  26. <ul class="zxf_setLeftList">
  27. <li class="fl mgb40">
  28. <em class="dp_va w100 t_r mgr15 fl f16 c222">优秀率</em>
  29. <div class="fl zxf_rangeJudgeWp mgt10">
  30. <div class="rangeWp scrollBar">
  31. <div class="currenRange scrollTrack blue" data-len="10" style="width: 0px;"></div>
  32. <em class="icon icon_thumb scrollThumb" style="margin-left: 0px;"></em>
  33. </div>
  34. </div>
  35. <div class="fl mgl30 f12 c555">
  36. <input class="zxf_inp mgr5 currentValueInp yxl" type="text" value="${staAnalysisParam.yxl?number*100}" readonly="readonly" style="height: 30px;line-height: 30px;width: 30px;">%
  37. </div>
  38. </li>
  39. <li class="fl mgb40">
  40. <em class="dp_va w100 t_r mgr15 fl f16 c222">良好率</em>
  41. <div class="fl zxf_rangeJudgeWp mgt10">
  42. <div class="rangeWp scrollBar">
  43. <div class="currenRange scrollTrack green" data-len="20" style="width: 0px;"></div>
  44. <em class="icon icon_thumb scrollThumb" style="margin-left: 0px;"></em>
  45. </div>
  46. </div>
  47. <div class="fl mgl30 f12 c555">
  48. <input class="zxf_inp mgr5 currentValueInp lhl" type="text" value="${staAnalysisParam.lhl?number*100}" readonly="readonly" style="height: 30px;line-height: 30px;width: 30px;">%
  49. </div>
  50. </li>
  51. <li class="fl mgb40">
  52. <em class="dp_va w100 t_r mgr15 fl f16 c222">及格率</em>
  53. <div class="fl zxf_rangeJudgeWp mgt10">
  54. <div class="rangeWp scrollBar">
  55. <div class="currenRange scrollTrack orange" data-len="30" style="width: 0px;"></div>
  56. <em class="icon icon_thumb scrollThumb" style="margin-left: 0px;"></em>
  57. </div>
  58. </div>
  59. <div class="fl mgl30 f12 c555">
  60. <input class="zxf_inp mgr5 currentValueInp jgl" type="text" value="${staAnalysisParam.jgl?number*100}" readonly="readonly" style="height: 30px;line-height: 30px;width: 30px;">%
  61. </div>
  62. </li>
  63. <li class="fl mgb40">
  64. <em class="dp_va w100 t_r mgr15 fl f16 c222">低分率</em>
  65. <div class="fl zxf_rangeJudgeWp mgt10">
  66. <div class="rangeWp scrollBar">
  67. <div class="currenRange scrollTrack red" data-len="40" style="width: 0px;"></div>
  68. <em class="icon icon_thumb scrollThumb" style="margin-left: 0px;"></em>
  69. </div>
  70. </div>
  71. <div class="fl mgl30 f12 c555">
  72. <input class="zxf_inp mgr5 currentValueInp dfl" type="text" value="${staAnalysisParam.dfl?number*100}" readonly="readonly" style="height: 30px;line-height: 30px;width: 30px;">%
  73. </div>
  74. </li>
  75. </ul>
  76. </div>
  77. </div>
  78. <div class="zxf_setLevelWp">
  79. <ul class="zxf_setLevelUl t_l clearfix pdlr60">
  80. <li class="fl mgt60">
  81. <em class="c222 f16 dp_va mgr20 w120 t_r">多科分数段</em>
  82. <span class="dp_va c555 f14"><input class="zxf_inp fsd_d numInput" type="text" placeholder="请输入全科分数段" value="${staAnalysisParam.fsd_d}" style="width: 170px;"></span>
  83. </li>
  84. <li class="fl mgt60">
  85. <em class="c222 f16 dp_va mgr20 w120 t_r">名次段</em>
  86. <span class="dp_va c555 f14"><input class="zxf_inp mcd numInput" type="text" placeholder="请输入名次段" value="${staAnalysisParam.mcd}" style="width: 170px;"></span>
  87. </li>
  88. <li class="fl mgt60">
  89. <em class="c222 f16 dp_va mgr20 w120 t_r">单科分数段</em>
  90. <span class="dp_va c555 f14"><input class="zxf_inp fsd_s numInput" type="text" placeholder="请输入单科分数段" value="${staAnalysisParam.fsd_s}" style="width: 170px;"></span>
  91. </li>
  92. <li class="fl mgt60">
  93. <em class="c222 f16 dp_va mgr20 w120 t_r fl">单科统计设置</em>
  94. <span class="selecterBox selecterStyle1 fl selectExamTypeDropBox" style="width:210px;">
  95. <span class="selecterValue" style="line-height: 32px;height: 32px;">
  96. <#if staAnalysisParam.statisticalCaliberSubject==2>
  97. <p style="line-height: 32px;height: 32px;">零分和缺考都不统计</p>
  98. <#else>
  99. <p style="line-height: 32px;height: 32px;">缺考不统计</p>
  100. </#if>
  101. <input type="hidden" class="selRes statisticalCaliberSubject" value="${staAnalysisParam.statisticalCaliberSubject}">
  102. </span>
  103. <span class="selecterDrop" style="width: 110px;">
  104. <a href="javascript:void(0);" value="1">缺考不统计</a>
  105. <a href="javascript:void(0);" value="2">零分和缺考都不统计</a>
  106. </span>
  107. </span>
  108. </li>
  109. <li class="fl mgt60">
  110. <em class="c222 f16 dp_va mgr20 w120 t_r">多科统计设置</em>
  111. <span class="dp_va c555 f14"><input class="zxf_inp statisticalCaliberMultiSubject" readonly="readonly" type="text" placeholder="1" value="1" style="width: 170px;"></span>
  112. <p class="cb9b9b9 14 mgt5 pdl140">1 表示缺考不统计</p>
  113. </li>
  114. </ul>
  115. </div>
  116. </div>
  117. </div>
  118. <!-- 满分(理科)设置 -->
  119. <div class="zxf_tabCon mfljsz dis_none">
  120. <div class="zxf_mflkszCon w650">
  121. <div class="clearfix pdt50 pdb40">
  122. <h2 class="f24 c222 fl">满分(理科)</h2>
  123. <input class="zxf_inp cff8d8d sxfsFullScore1 numInput" value="${staAnalysisParam.sxfsFullScore1}"/>
  124. </div>
  125. <div class="zxf_setGradeWp">
  126. <div class="zxf_scrollBox_gradeLevel" style="position: relative;overflow: hidden;max-height:400px;">
  127. <ul class="zxf_setGradeList lksz">
  128. <#if scienceScore?? && (scienceScore?size gt 0)>
  129. <#list scienceScore as map>
  130. <#list map?keys as key>
  131. <li class="pdl20 pdr15 bor_d9d9d9 mgb20 clearfix">
  132. <span class="school_level t_l fl f16 c555 w_40">${key}</span>
  133. <span class="fl grade t_l fl f20 cff8d8d w_40"><em>${map[key]}</em></span>
  134. <span class="f16 fr">
  135. <a href="javascript:;" class="zxf_editBtn c45a5fe dp_va">编辑</a>
  136. <#if map_index gt 0>
  137. <em class="mglr5 cd9d9d9 dp_va">|</em>
  138. <a href="javascript:;" class="zxf_delBtn cff8d8d dp_va">删除</a>
  139. </#if>
  140. </span>
  141. </li>
  142. </#list>
  143. </#list>
  144. </#if>
  145. </ul>
  146. </div>
  147. <a href="javascript:;" class="zxf_addEleBtn c888 f16"><em class="mgr5">+</em>添加分数线</a>
  148. </div>
  149. </div>
  150. </div>
  151. <!-- 满分(文科)设置 -->
  152. <div class="zxf_tabCon mfwksz dis_none">
  153. <div class="zxf_mflkszCon w650">
  154. <div class="clearfix pdt50 pdb40">
  155. <h2 class="f24 c222 fl">满分(文科)</h2>
  156. <input class="zxf_inp cff8d8d sxfsFullScore2 numInput" value="${staAnalysisParam.sxfsFullScore2}"/>
  157. </div>
  158. <div class="zxf_setGradeWp">
  159. <div class="zxf_scrollBox_gradeLevel" style="position: relative;overflow: hidden;max-height:400px;">
  160. <ul class="zxf_setGradeList wksz">
  161. <#if artsScore?? && (artsScore?size gt 0)>
  162. <#list artsScore as map>
  163. <#list map?keys as key>
  164. <li class="pdl20 pdr15 bor_d9d9d9 mgb20 clearfix">
  165. <span class="school_level t_l fl f16 c555 w_40">${key}</span>
  166. <span class="fl grade t_l fl f20 cff8d8d w_40"><em>${map[key]}</em></span>
  167. <span class="f16 fr">
  168. <a href="javascript:;" class="zxf_editBtn c45a5fe dp_va">编辑</a>
  169. <#if map_index gt 0>
  170. <em class="mglr5 cd9d9d9 dp_va">|</em>
  171. <a href="javascript:;" class="zxf_delBtn cff8d8d dp_va">删除</a>
  172. </#if>
  173. </span>
  174. </li>
  175. </#list>
  176. </#list>
  177. </#if>
  178. </ul>
  179. </div>
  180. <a href="javascript:;" class="zxf_addEleBtn c888 f16"><em class="mgr5">+</em>添加分数线</a>
  181. </div>
  182. </div>
  183. </div>
  184. <!-- 满分设置 -->
  185. <div class="zxf_tabCon mfsz dis_none">
  186. <div class="zxf_mflkszCon w650">
  187. <div class="clearfix pdt50 pdb40">
  188. <h2 class="f24 c222 fl">满分</h2>
  189. <input class="zxf_inp cff8d8d sxfsFullScore0 numInput" value="${staAnalysisParam.sxfsFullScore0}"/>
  190. </div>
  191. <div class="zxf_setGradeWp">
  192. <div class="zxf_scrollBox_gradeLevel" style="position: relative;overflow: hidden;max-height:400px;">
  193. <ul class="zxf_setGradeList wlksz">
  194. <#if baseScore?? && (baseScore?size gt 0)>
  195. <#list baseScore as map>
  196. <#list map?keys as key>
  197. <li class="pdl20 pdr15 bor_d9d9d9 mgb20 clearfix">
  198. <span class="school_level t_l fl f16 c555 w_40">${key}</span>
  199. <span class="fl grade t_l fl f20 cff8d8d w_40"><em>${map[key]}</em></span>
  200. <span class="f16 fr">
  201. <a href="javascript:;" class="zxf_editBtn c45a5fe dp_va">编辑</a>
  202. <#if map_index gt 0>
  203. <em class="mglr5 cd9d9d9 dp_va">|</em>
  204. <a href="javascript:;" class="zxf_delBtn cff8d8d dp_va">删除</a>
  205. </#if>
  206. </span>
  207. </li>
  208. </#list>
  209. </#list>
  210. </#if>
  211. </ul>
  212. </div>
  213. <a href="javascript:;" class="zxf_addEleBtn c888 f16"><em class="mgr5">+</em>添加分数线</a>
  214. </div>
  215. </div>
  216. </div>
  217. </div>
  218. <div class="zxf_btnWp bgfff t_c pdtb20">
  219. <a href="javascript:;" class="zxf_bgBlue_btn zxf_stayBtn f16">保存</a>
  220. </div>
  221. </div>
  222. <!-- 弹框 -->
  223. <div class="zxf_popupEditGrede dis_none" id="gradeLevel">
  224. <ul class="zxf_fromList">
  225. <li class="clearfix mgb20 f16 c222 school_level">
  226. <em class="mgr20 fl t_r">名称:</em>
  227. <span class="fl">
  228. <input class="zxf_inp" type="text" value="一本">
  229. </span>
  230. </li>
  231. <li class="clearfix mgb20 f16 c222 grade">
  232. <em class="mgr20 fl t_r">分数:</em>
  233. <span class="fl">
  234. <input class="zxf_inp mgr20" type="text" value="484" style="width: 76px;">
  235. </span>
  236. </li>
  237. </ul>
  238. </div>
  239. </body>
  240. <script type="text/javascript" src="${cssPath}/v4/js/jquery.min.js"></script>
  241. <script type="text/javascript" src="${cssPath}/v4/js/fun.js"></script>
  242. <script type="text/javascript" src="${cssPath}/v4/js/jquery.artDialog.source.js"></script>
  243. <script type="text/javascript" src="${cssPath}/v4/js/My97DatePicker/WdatePicker.js"></script>
  244. <script type="text/javascript" src="${cssPath}/v4/js/echarts.min.js"></script>
  245. <script type="text/javascript" src="${request.contextPath}/statics/lib/commonDialog.js" charset="utf-8"></script>
  246. <script>
  247. $(".zxf_scrollBox_gradeLevel").perfectScrollbar();
  248. $(".selecterBox").drop();
  249. $(".selecterBox").Selector();
  250. $(function () {
  251. sendMessage();
  252. });
  253. function sendMessage() {
  254. var height = document.body.scrollHeight;
  255. height += 20;
  256. window.parent.postMessage(height,'*');
  257. }
  258. //tab
  259. $(document).on("click", ".zxf_tabTit a", function(){
  260. var $tabCon = $(this).parents(".zxf_tabTit").next(".zxf_tabConWp").find(".zxf_tabCon");
  261. var idx = $(this).index();
  262. var $totalGrade = $tabCon.find(".totalGrade");
  263. var $grade = $tabCon.eq(idx).find(".grade");
  264. $(this).addClass("on").siblings().removeClass("on");
  265. $tabCon.eq(idx).show().siblings().hide();
  266. sendMessage();
  267. });
  268. //添加分数线
  269. $(document).on("click", ".zxf_addEleBtn", function(){
  270. var $setGrade = $(this).parents(".zxf_setGradeWp");
  271. var $ul = $setGrade.find(".zxf_setGradeList");
  272. var lastScore= parseInt($ul.find("li:last").find("em").html())-10;
  273. var html = '';
  274. html += '<li class="pdl20 pdr15 bor_d9d9d9 mgb20 clearfix">';
  275. html += '<span class="school_level t_l fl f16 c555 w_40">一本</span>';
  276. html += '<span class="fl grade t_l fl f20 cff8d8d w_40"><em>'+lastScore+'</em></span>';
  277. html += '<span class="f16 fr">';
  278. html += '<a href="javascript:;" class="zxf_editBtn c45a5fe dp_va">编辑</a>';
  279. html += '<em class="mglr10 cd9d9d9 dp_va">|</em>';
  280. html += '<a href="javascript:;" class="zxf_delBtn cff8d8d dp_va">删除</a>';
  281. html += '</span>';
  282. html += '</li>';
  283. $ul.append(html);
  284. });
  285. //删除分数线
  286. $(document).on("click", ".zxf_delBtn", function(){
  287. var $li = $(this).parents("li");
  288. $li.remove();
  289. });
  290. // 编辑分数线弹窗
  291. $(document).on("click", ".zxf_editBtn", function(){
  292. var that = this;
  293. var $setGrade = $(that).parents(".zxf_setGradeWp");
  294. var $totalGrade = $setGrade.prev().find(".totalGrade");
  295. var $ul = $setGrade.find(".zxf_setGradeList");
  296. var totalGrade = 0;
  297. var $li = $(that).parents("li");
  298. var $school_level = $li.find(".school_level");
  299. var $grade = $li.find(".grade").find("em");
  300. var level = $school_level.text();
  301. var grade = $grade.text();
  302. var levelInp = $("#gradeLevel").find(".school_level").find(".zxf_inp")
  303. var gradeInp = $("#gradeLevel").find(".grade").find(".zxf_inp")
  304. levelInp.val(level);
  305. gradeInp.val(grade);
  306. var gradeLevel=document.getElementById('gradeLevel');
  307. var artDialog=art.dialog({
  308. lock: true,
  309. fixed: true,
  310. title: '编辑分数线',
  311. content: gradeLevel,
  312. width:'530px',
  313. opacity: 0.6,
  314. drag: false,
  315. padding: '0px 25px',
  316. ok: function() {
  317. var $li = $(that).parents("li");
  318. var $school_level = $li.find(".school_level");
  319. var $grade = $li.find(".grade").find("em");
  320. $school_level.text(levelInp.val());
  321. $grade.text(gradeInp.val());
  322. var $grade = $ul.find(".grade");
  323. $grade.each(function(){
  324. totalGrade += ($(this).find("em").text())*1;
  325. });
  326. $totalGrade.text(totalGrade + '分');
  327. },
  328. cancel: function() {},
  329. init: function() {}
  330. })
  331. });
  332. </script>
  333. <script type="text/javascript">
  334. $(function(){
  335. var moveTag = true; // 决定mouseMove事件的执行
  336. var maxValue = 100;
  337. var dataList = [];
  338. var nowIndexTrack;
  339. var nowIndexThumb;
  340. var nowIndexInp;
  341. var thisMaxWidth;
  342. var thisMaxValue;
  343. // var total = 0;
  344. initZTSZ();
  345. $(".scrollThumb").on("mousedown", function(e) {
  346. moveTag = true;
  347. var that = this;
  348. var length = $(that).width()/2;
  349. var $scrollTrack = $(that).parent(".scrollBar").find(".scrollTrack");
  350. var $currentValueInp = $(that).parents("li").find(".currentValueInp");
  351. var $scrollBar = $(that).parents(".scrollBar");
  352. var initValue = $scrollTrack.data("len");
  353. var value = 0;
  354. nowIndexTrack = $scrollTrack.index('.scrollTrack')
  355. nowIndexThumb = $(this).index('.scrollThumb')
  356. nowIndexInp = $currentValueInp.index('.currentValueInp')
  357. $(document).mousemove(function(e) {
  358. if (moveTag === false) return;
  359. if(nowIndexTrack==0){
  360. var changeX = e.clientX - length - $(".zxf_rangeJudgeWp").offset().left;
  361. $('.scrollTrack').eq(nowIndexTrack).data("len", changeX);
  362. $('.scrollTrack').eq(nowIndexTrack).css("width", $scrollTrack.data("len") + 3 + "px");
  363. $('.scrollThumb').eq(nowIndexThumb).css("marginLeft", $scrollTrack.data("len") + "px");
  364. if (($scrollTrack.data("len") + 14) >= $scrollBar.width()) { // "14":为thumb的宽度 临界最小值
  365. $('.scrollTrack').eq(nowIndexTrack).css("width", $scrollBar.width() + 3 + "px");
  366. $('.scrollThumb').eq(nowIndexThumb).css("marginLeft", $scrollBar.width() - length + "px");
  367. value = maxValue;
  368. } else if ($scrollTrack.data("len") <= 0) { //临界最小值
  369. $('.scrollThumb').eq(nowIndexThumb).css("marginLeft", "0px");
  370. $('.scrollTrack').eq(nowIndexTrack).css("width", "0px");
  371. value = 0;
  372. $scrollTrack.data("len", 0);
  373. moveTag = false;
  374. } else {
  375. value = Math.round(100 * ($scrollTrack.data("len") / $scrollBar.width()).toFixed(2));
  376. }
  377. $(".currentValueInp").eq(nowIndexInp).val(value);
  378. }else{
  379. var lwidth=$('.scrollThumb').eq(nowIndexThumb-1).css("marginLeft");
  380. lwidth=lwidth.substring(0,lwidth.length-2);
  381. var changeX = e.clientX - length - $(".zxf_rangeJudgeWp").offset().left;
  382. if(lwidth>=changeX){
  383. $('.scrollTrack').eq(nowIndexTrack).data("len", changeX);
  384. $('.scrollTrack').eq(nowIndexTrack).css("width", $scrollTrack.data("len") + 3 + "px");
  385. $('.scrollThumb').eq(nowIndexThumb).css("marginLeft", $scrollTrack.data("len") + "px");
  386. if (($scrollTrack.data("len") + 14) >= $scrollBar.width()) { // "14":为thumb的宽度 临界最小值
  387. $('.scrollTrack').eq(nowIndexTrack).css("width", $scrollBar.width() + 3 + "px");
  388. $('.scrollThumb').eq(nowIndexThumb).css("marginLeft", $scrollBar.width() - length + "px");
  389. value = maxValue;
  390. } else if ($scrollTrack.data("len") <= 0) { //临界最小值
  391. $('.scrollThumb').eq(nowIndexThumb).css("marginLeft", "0px");
  392. $('.scrollTrack').eq(nowIndexTrack).css("width", "0px");
  393. value = 0;
  394. $scrollTrack.data("len", 0);
  395. moveTag = false;
  396. } else {
  397. value = Math.round(100 * ($scrollTrack.data("len") / $scrollBar.width()).toFixed(2));
  398. }
  399. $(".currentValueInp").eq(nowIndexInp).val(value);
  400. }
  401. }
  402. });
  403. });
  404. $(document).mouseup(function() {
  405. moveTag = false;
  406. });
  407. });
  408. function initZTSZ() {
  409. $(".scrollTrack").each(function() { //初始化
  410. var $scrollBar = $(this).parents(".scrollBar");
  411. var $Thumb = $(this).next(".scrollThumb");
  412. var $inp = $(this).parents("li").find(".currentValueInp");
  413. var slb = parseFloat($inp.val());
  414. var len = slb / 100 * $scrollBar.width();
  415. $Thumb.css("marginLeft", len + "px");
  416. $(this).css("width", len + 2 + "px");
  417. });
  418. }
  419. //保存
  420. $(".zxf_bgBlue_btn").on("click", function() {
  421. //参数校验
  422. var checkRes=paramCheck();
  423. if(!checkRes.flag){
  424. artContent(checkRes.msg);
  425. return;
  426. }
  427. //获取数据
  428. var data = getData();
  429. $.ajax({
  430. url: "/param/updateParam",
  431. type: "POST",
  432. data: data,
  433. async: false,
  434. success: function(data) {
  435. if (data.code == "1") {
  436. artContent("保存成功");
  437. //window.location.reload();
  438. } else {
  439. artContent(data.msg);
  440. //layer.msg(data.msg);
  441. }
  442. },
  443. error: function(msg) {
  444. artContent("参数为空或请求服务器错误");
  445. //layer.msg('服务器忙,请稍后重试');
  446. }
  447. });
  448. })
  449. function getData() {
  450. var yxl = $(".yxl").val() / 100;
  451. var lhl = $(".lhl").val() / 100;
  452. var jgl = $(".jgl").val() / 100;
  453. var dfl = $(".dfl").val() / 100;
  454. var fsd_s = $(".fsd_s").val();
  455. var mcd = $(".mcd").val();
  456. var fsd_d = $(".fsd_d").val();
  457. //单科统计设置
  458. var statisticalCaliberSubject = $(".statisticalCaliberSubject").val();
  459. var statisticalCaliberMultiSubject = 1;
  460. var sxfsFullScore0 = $(".sxfsFullScore0").val();
  461. var sxfsFullScore1 = $(".sxfsFullScore1").val();
  462. var sxfsFullScore2 = $(".sxfsFullScore2").val();
  463. var sxfs0 = JSON.stringify(getwlksz($(".wlksz")));
  464. var sxfs1 = JSON.stringify(getwlksz($(".lksz")));
  465. var sxfs2 = JSON.stringify(getwlksz($(".wksz")));
  466. return {
  467. "yxl": yxl,
  468. "lhl": lhl,
  469. "jgl": jgl,
  470. "dfl": dfl,
  471. "fsd_s": fsd_s,
  472. "fsd_d": fsd_d,
  473. "mcd": mcd,
  474. "statisticalCaliberSubject": statisticalCaliberSubject,
  475. "statisticalCaliberMultiSubject": statisticalCaliberMultiSubject,
  476. "sxfsFullScore0": sxfsFullScore0,
  477. "sxfsFullScore1": sxfsFullScore1,
  478. "sxfsFullScore2": sxfsFullScore2,
  479. "sxfs0": sxfs0,
  480. "sxfs1": sxfs1,
  481. "sxfs2": sxfs2,
  482. "examId": $("#examId").val()
  483. };
  484. }
  485. //获取文理科设置
  486. function getwlksz(obj) {
  487. var lksz = {};
  488. $(obj).find("li").each(function() {
  489. var key = $(this).find("span").eq(0).html();
  490. var value = $(this).find("span").eq(1).find("em").html();
  491. lksz[key] = value;
  492. })
  493. return lksz;
  494. }
  495. //对numInput进行校验数字
  496. $(".numInput").keyup(function(){
  497. var num=$(this).val();
  498. var flag=num.match(/^[0-9]*$/);
  499. if(flag==null){
  500. artContent("请输入整数!")
  501. $(this).val('');
  502. }
  503. })
  504. function paramCheck() {
  505. var yxl = $(".yxl").val();
  506. var lhl = $(".lhl").val();
  507. var jgl = $(".jgl").val();
  508. var dfl = $(".dfl").val();
  509. var fsd_s = $(".fsd_s").val();
  510. var mcd = $(".mcd").val();
  511. var fsd_d = $(".fsd_d").val();
  512. var sxfsFullScore0 = $(".sxfsFullScore0").val();
  513. var sxfsFullScore1 = $(".sxfsFullScore1").val();
  514. var sxfsFullScore2 = $(".sxfsFullScore2").val();
  515. if (yxl == "") {
  516. return { "flag": false, "msg": "ylx不能为空" }
  517. }
  518. if (lhl == "") {
  519. return { "flag": false, "msg": "lhl不能为空" }
  520. }
  521. if (jgl == "") {
  522. return { "flag": false, "msg": "jgl不能为空" }
  523. }
  524. if (dfl == "") {
  525. return { "flag": false, "msg": "dfl不能为空" }
  526. }
  527. dfl=parseFloat(dfl);
  528. jgl=parseFloat(jgl);
  529. lhl=parseFloat(lhl);
  530. yxl=parseFloat(yxl);
  531. if (!(dfl > 0 && dfl <= jgl && jgl < lhl && lhl < yxl && yxl< 100)) {
  532. return { "flag": false, "msg": "不满足0 <dfl <=jgl <lhl <yxl <100这个关系" }
  533. }
  534. if (fsd_s == "") {
  535. return { "flag": false, "msg": "单科分数段不能为空" }
  536. }
  537. if (fsd_d == "") {
  538. return { "flag": false, "msg": "多科分数段不能为空" }
  539. }
  540. if (mcd == "") {
  541. return { "flag": false, "msg": "名次段不能为空" }
  542. }
  543. if (sxfsFullScore0 == "") {
  544. return { "flag": false, "msg": "满分不能为空" }
  545. }
  546. if (sxfsFullScore1 == "") {
  547. return { "flag": false, "msg": "满分(理)不能为空" }
  548. }
  549. if (sxfsFullScore2 == "") {
  550. return { "flag": false, "msg": "满分(文)不能为空" }
  551. }
  552. var res1=checkwlksz($(".wlksz"));
  553. if(!res1.flag){
  554. return res1;
  555. }
  556. var res2=checkwlksz($(".lksz"));
  557. if(!res2.flag){
  558. return res2;
  559. }
  560. var res3=checkwlksz($(".wksz"));
  561. if(!res3.flag){
  562. return res3;
  563. }
  564. return { "flag": true }
  565. }
  566. //获取文理科设置
  567. function checkwlksz(obj) {
  568. var tempArr=[];
  569. var keyArr = [];
  570. var valuesArr = [];
  571. $(obj).find("li").each(function() {
  572. var key = $(this).find("span").eq(0).html();
  573. var value = $(this).find("span").eq(1).find("em").html();
  574. value=parseInt(value);
  575. if (key == "") {
  576. tempArr.push({ "flag": false, "msg": "满分设置类别不能为空" });
  577. }
  578. if (value == "") {
  579. tempArr.push({ "flag": false, "msg": "满分设置类别对应的分数值不能为空" });
  580. }
  581. if (keyArr.length > 0 && $.inArray(key, keyArr) >= 0) {
  582. tempArr.push({ "flag": false, "msg": "满分设置" + key + "重复" });
  583. }
  584. if (valuesArr.length > 0 && valuesArr[valuesArr.length - 1] <= value) {
  585. tempArr.push({ "flag": false, "msg": "满分设置类别对应的分数大小关系错误重复" });
  586. }
  587. keyArr.push(key);
  588. valuesArr.push(value);
  589. })
  590. if(tempArr.length>0){
  591. return tempArr[0];
  592. }
  593. return { "flag": true };
  594. }
  595. </script>
  596. </html>

其中

  1. $(function () {
  2. sendMessage();
  3. });
  4. //向父页面发送消息
  5. function sendMessage() {
  6. var height = document.body.scrollHeight;
  7. height += 20;
  8. window.parent.postMessage(height,'*');
  9. }

最终就可以实现跨域设置页面高度

发表评论

表情:
评论列表 (有 0 条评论,496人围观)

还没有评论,来说两句吧...

相关阅读

    相关 iframe适应高度

    [JS][]自适应高度,其实就是设置[iframe][]的高度,使其等于内嵌网页的高度,从而看不出来滚动条和嵌套痕迹。对于用户体验和网站美观起着重要作用。 如果内容是固定的,