как я могу заставить мои пользовательские кнопки visualforce работать?

У меня есть тестовая страница Visualforce, которую я пытаюсь заставить работать. Это просто пустая страница с двумя кнопками, которые должны открывать URL-адрес в iframe. Ниже приведен код, который у меня есть за страницей.

Высший класс:

public class OnLoadController {

    public String Page {get; set;}
    public String OpenPageURL {get; set;}

    public void OnLoadController()
    {
        Page = '' ;
        OpenPageURL = '' ;
    }

    public PageReference redirect()
    {
        if(Page == 'google')
        {
            OpenPageURL = 'http://www.google.com' ;
        }
        if(Page == 'mpay')
        {
            OpenPageURL = 'http://www.yahoo.com/' ;
        }
        return null;
    }

}

Страница VisualForce:

<apex:page id="pg" controller="OnLoadController">
<apex:form>

<apex:actionFunction action="{!redirect}" name="OpenPage" reRender="pb,theIframe">
    <apex:param assignTo="{!Page}" value="" name="param1"/>
</apex:actionFunction>


    <apex:pageBlock id="pb">

        <apex:pageBlockButtons>
            <apex:commandButton value="Google" onclick="OpenPage('google'); return false;"/>
            <apex:commandButton value="Yahoo" onclick="OpenPage('blog'); return false;"/>
        </apex:pageBlockButtons>

        <apex:iframe id="theIframe" src="{!OpenPageURL}" scrolling="true"/>

    </apex:pageBlock>


</apex:form>
</apex:page>

Страница загружается нормально, и кнопки отображаются отлично, но когда я нажимаю на них, ничего не происходит. Я просто хочу иметь возможность нажать кнопку и открыть URL-адрес в iframe страницы.


person BSanders    schedule 03.12.2013    source источник
comment
if(Page == 'mpay') и onclick=OpenPage('blog');   -  person Andrii Muzychuk    schedule 04.12.2013


Ответы (1)


Ваш код apex и визуальная сила в порядке, но вам нужно заглянуть в консоль браузера, где вы можете найти следующие ошибки:

Страница по адресу 'https://c.ap1.visual.force.com/apex/test' был загружен через HTTPS, но запускал небезопасное содержимое с 'http://www.yahoo.com/': этот контент также должен быть загружен через HTTPS.

После исправления этой ошибки вы столкнетесь со следующей ошибкой:

Отказался отображать 'https://www.google.com/?gws_rd=cr&ei=IhiYUoCsOcWdhAedlIKwDg' во фрейме, потому что для параметра "X-Frame-Options" установлено значение "SAMEORIGIN".

Как вы понимаете, это проблема безопасности.

Эта страница будет работать нормально OpenPageURL = 'http://www.youtube.com/embed/' ;

person Pavel Slepiankou    schedule 03.12.2013