javascript - 为什么我的 javascript window.open 函数读取 url,而不是数组中的宽度和高度参数?

标签 javascript

几年前,我用很多 Flash 功能构建了我的网站,尽管是基于 html 文件。我一直在研究 html/css/javascript 替代方案,但卡在最后一页上。它包括一个简单的 (javascript) 幻灯片放映,带有向后和向前按钮以及可在自定义窗口中打开的可单击图像。在 Flash 版本中,图像是嵌入了以下 ActionScript 的 swf 文件:

movieclip_inst.onRelease = function():Void {    
getURL("javascript:openNewWindow('Photopages/A01La_Jolla1.html', 925, 693)");
}  

在 html 文件的头部调用以下 javascript 函数:

    function openNewWindow(page, width, height) { 
OpenWin = this.open(page, "Illustrationslideshow", "toolbar=no, menubar=no ,location=no, scrollbars=yes, resizable=yes, statusbar=no, width=" + width + ", height=" + height + ", top=" + (screen.height/2 - height/2) + ", left=" + (screen.width/2 - width/2) + "\""); 
} 

这将打开外部数组中列出的各个 html 文件,如下所示:

function setupPages() {
var pages = new Array();

pages[0] = 'Photopages/A01La_Jolla1.html', 925, 690;
pages[1] = 'Photopages/A02La_Jolla2.html', 888, 650;
. . .
return pages;
}

这与 Flash 版本完美配合,但是当我尝试在 html 文件正文中应用该函数时:

<a href="javascript:void()#" onclick="openNewWindow(pages[currentSlideNum])"><img src="images/photosforswfs/La_Jolla_01.jpg" id="artwork" /></a>

它只会调用 html 图像文件,但不会遵循我设置的尺寸。窗口以与原始窗口相同的大小或小正方形打开,具体取决于浏览器。以下是 html 文档头部的 pages 变量的设置:

var pages = new Array();
pages = setupPages();

该数组还包含图像和标题,以相同的方式设置:

function setupSlides() {
var slides = new Array();

slides[0] = 'images/photosforswfs/La_Jolla_01.jpg'; 
...
return slides;
}

function setupCaptions() {
var captions = new Array();

captions[0] = '<br />Louis Karhn building in La Jolla, CA | 1';
...
return captions;
}

幻灯片放映设置如下:

var slides = new Array();
slides = setupSlides();

var captions = new Array();
captions = setupCaptions();

var currentSlideNum = 0;
var numSlides = slides.length;

function previousSlide() {
   if (currentSlideNum == 0) {
   currentSlideNum = numSlides-1;
   } else {
   currentSlideNum--;
   }
   var slideObj = document.getElementById('artwork');
   slideObj.src = slides[currentSlideNum];
   var captionObj = document.getElementById('caption');
   captionObj.innerHTML = captions[currentSlideNum];
}

function nextSlide() {
if (currentSlideNum == numSlides-1) {
   currentSlideNum = 0;
   } else {
   currentSlideNum++;
   }
   var slideObj = document.getElementById('artwork');
   slideObj.src = slides[currentSlideNum];
   var captionObj = document.getElementById('caption');
   captionObj.innerHTML = captions[currentSlideNum];
    }

我做错了什么?我是一个完全的新手,剪切和粘贴代码而不是编写代码。我尝试过的任何方法都无法解决问题。请帮忙! 简迪伊

最佳答案

您的pages[0]数组位置仅保存Photopages/A01La_Jolla1.html并返回最后一个值(690)。 如果您想在页面数组中包含所有数据,您可以将其设为对象或另一个数组:

pages[0] = ['Photopages/A01La_Jolla1.html', 925, 690];

这样您就需要请求 pages[0][1]pages[0][2] 来获取尺寸。

另一种方法是使用对象:

pages[0] = {url:'Photopages/A01La_Jolla1.html', w:925, h:690};

这样您就必须请求:pages[0].wpages[0].h

最后,当然,您需要稍微更改一下对函数的调用以指定 with ispages[0].w 等,但这很简单。

openNewWindow(pages[0].url, pages[0].w, pages[0].h);

或者您可以只发送数组项并让函数从内部提取信息:

function openNewWindow(page) { 
    var OpenWin = window.open(page.url, "Illustrationslideshow", "toolbar=no, menubar=no ,location=no, scrollbars=yes, resizable=yes, statusbar=no, width=" + page.w+ ", height=" + page.h+ ", top=" + (screen.height/2 - height/2) + ", left=" + (screen.width/2 - width/2) + "\""); 
}
openNewWindow(pages[0]);

关于javascript - 为什么我的 javascript window.open 函数读取 url,而不是数组中的宽度和高度参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30028631/

相关文章:

javascript - 知道网页上文本插入指针处的单词吗?

javascript - 如何遍历一个对象?

javascript - 使用 Jasmine 测试 TypeScript 生成的类

javascript - 潮汐SDK App如何打开本地文件

javascript - 如何使用 Node.js 下载文件(不使用第三方库)?

javascript - 为什么字符串对后增量 (something++) 和加 1 (something = something +1) 产生不同的输出?

javascript - Tablesorter 过滤器 HTML

javascript - 如果没有选中任何复选框,并且在 Jquery 加载页面时网格中禁用所有复选框,则禁用按钮,则发出警报

javascript - Codeigniter:在进入 Controller 之前验证数据

javascript - 尝试从排列的 JSON 键中删除引号