1

サイトのフラッシュのハイパーリンクに問題があります。サイトはCMSにあるため、承認の段階が異なるため、正確なURLがわかりません。

function piClick(e:MouseEvent):void
{
  var url:String = "/cms__Main?name=Target_name";
  var request:URLRequest = new URLRequest(url);
  try {
    navigateToURL(request, '_self');
  } catch (e:Error) {
    trace("Error occurred!");
  }
} 

cms_Mainはサイトのステージに応じて変化するため、機能しません。私がおそらくする必要があるのは:

  • URLを取得します(または、可能であれば最後の「/」の後の部分)
  • 文字列内の「名前」変数を変更します

fe

https://domain_name/.../status?name=Name_I_need_to_swap&sname=Country_name&..
4

2 に答える 2

0

あなたはでURLを得ることができますthis.loaderInfo.url

于 2012-12-14T12:19:38.907 に答える
0

stage.loaderInfo.urlswf自体のアドレスを取得するため、完全なアドレス、クエリ、またはハッシュタグは取得されません。ただし、Javascriptを使用してこのすべての情報を取得できます。

import flash.external.ExternalInterface;

function getFullAddress():String {
    if (ExternalInterface.available) {
        var href:String = ExternalInterface.call('function(){return window.location.href}');
        if (href) return href.toString();
    }
    throw new Error('Make sure JS is enabled.');
}
var fullAddr:String = getFullAddress();

編集:あなたが求めているものすべてを取得して変更する方法は次のとおりです。

import flash.external.ExternalInterface;
import flash.net.URLVariables;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.net.navigateToURL;


function getFullAddress():String {
    if (ExternalInterface.available) {
        var href:String = ExternalInterface.call('function(){return window.location.href}');
        if (href) return href.toString();
    }
    throw new Error('Make sure JS is enabled.');
}
function getQuery(fullAddr:String):URLVariables {
    if (!fullAddr.match(/\?[^#]/)) return new URLVariables();
    var q:String = fullAddr.replace(/^.*?\?([^#]+)(#.*)?$/,'$1');
    return new URLVariables(q);
}
function getAddress(fullAddr:String):String {
    return fullAddr.replace(/\?.*/,'').replace(/#.*/,'');
}
function getRequest(url:String,query:URLVariables=null,method:String='GET'):URLRequest {
    method = URLRequestMethod[method] || 'GET';
    var req:URLRequest = new URLRequest(url);
    req.method = method;
    if (method == 'GET' && query != null) {
        req.url += '?' + query.toString().replace(/%5f/gi,'_').replace(/%2d/gi,'-');
        // this is because dash and underscore chars are also
        // encoded by URLVariables. we want to omit this.
        return req;
    }
    req.data = query;
    return req;
}


var fullAddr:String = getFullAddress();
var addr:String = getAddress(fullAddr);

var query:URLVariables = getQuery(fullAddr);
query.name = 'Name_I_need_to_swap';
query.sname = 'Country_name';
// add as many variable-value pairs as you like
// and don't worry, they will be automatically
// encoded by the function called below

var req:URLRequest = getRequest(addr,query);
//navigateToURL(req);

// check the console to see the changed address
ExternalInterface.call('console.log',req);
于 2012-12-14T18:10:14.560 に答える