1

我通常使用Matlab's internal browser(例如,通过“web”命令),但它给我带来了一个问题,因为有时无法检测到用户何时单击我通过 Matlab 管理的在线调查的下一步。我从来没有遇到过任何外部浏览器(Firefox、Chrome、IE)的问题。我想在用户完成调查时自动关闭浏览器。我知道用户在完成调查后将访问的 URL,因此可以查看他们浏览器的 URL 是否是他们在完成调查后将访问的 URL。现在使用内部的 Matlab 浏览器,我使用:

[s,bwser] = web(url2, '-new', '-notoolbar', '-noaddressbox'); 
cloc = get(bwser, 'currentLocation'); 

然后检查cloc是否等于给定的 URL。我很想用外部浏览器做同样的事情。我知道如何调用外部浏览器并为其分配一个 URL。但是,在参与者单击链接后,如何从该浏览器中检索当前 URL?

4

1 回答 1

0

你可以试试这个:

function RunSurvey( startURL, finalURL )
    finalURL = lower(finalURL);
    hfig = figure( 'Menu','none','Name','Survey',...
        'ResizeFcn',@reSize,...
        'DeleteFcn',@figDelete);
    hExp = actxcontrol('Shell.Explorer.2',calcSize,hfig);
    Navigate(hExp,startURL);
    while (true)
        pause(1);
        current = lower(get(hExp,'LocationURL'));
        if ~isempty(strfind(current,finalURL))
            break;
        end
    end
    close( hfig )

% Figure delete function
function figDelete(src,evnt)
    hExp.delete;
end

function [size]=calcSize()
        pos = get(hfig,'Position');
    size = [2 2 pos(3)-5 pos(4)-20];
end

function reSize(src,evnt)
  if ~exist('hExp','var')
     return
  end
  move(hExp,calcSize);
end % reSize

end % RunSurvey

调用使用:

RunSurvey('www.google.com','www.mathworks.com')
于 2012-09-23T09:43:17.603 回答